Creazione di un modulo Guestbook personalizzato per l'alchimia CMS
-
13-12-2019 - |
Domanda
Sto cercando di costruire un modulo Guestbook all'interno di un sito di rotaie usando il quadro di alchimio CMS. Non sembra essere molto in termini di documentazione per il modulo edificio con l'alchimia, quindi sto andando fuori da Questa pagina .
Ho creato due controller, che gli amministratori utilizzeranno chiamato GuestBook_Controller.RB e ha inserito questo sotto app / controller / admin
module Admin
class GuestbookController < Alchemy::Admin::ResourcesController
def index
"index"
end
end
end
.
E un altro per gli ospiti per accedere sotto app / controller / guestbook_controller.rb
class GuestbookController < ActionController::Base
def index
"index"
end
end
.
La mia intenzione è che i post dei libri degli ospiti verranno visualizzati sotto una delle pagine già all'interno dell'Alchemy e un modulo verrà visualizzato anche su questa pagina.
Il modello GuestBook lo è questo:
class GuestbookEntry < ActiveRecord::Base
attr_accessible :location, :message, :name
end
.
Il mio file di percorsi sembra il seguente:
resources :guestbook
namespace :admin do
resources :guestbook
end
mount Alchemy::Engine => '/'
.
E ho un file chiamato Authorization_rules.rb in Config che sembra: Autorizzazione DO
role :admin do
has_permission_on :guestbook, :to => [:manage]
end
end
.
Il primo problema che sto incontrando è che andare al percorso / admin / guestbook mi dà l'errore "Non sei autorizzato", ma il file delle regole di autorizzazione dovrebbe essere chiamato dal mio Iitalizer, quindi perché sto ottenendo Questo errore?
# Registering guestbook module in Alchemy CMS
Alchemy::Modules.register_module(YAML.load_file(File.join(File.dirname(__FILE__), '../..', 'config/guestbook_module.yml')))
# Loading authorization rules and register them to auth engine instance
Alchemy::AuthEngine.get_instance.load(File.join(File.dirname(__FILE__), '../..', 'config/authorization_rules.rb'))
. Soluzione
Il problema con l'autorizzazione è facile. Hai solo bisogno di scrivere:
has_permission_on :admin_guestbook, :to => [:manage]
.
Un'altra cosa che ho notato: il tuo frontend guestbookcontroller dovrebbe ereditare dall'alchimia :: Basecontroller.
E dovresti assicurarti che la tua pagina che desideri rendering delle voci del Guestbook, non deve essere memorizzata nella cache dall'alchimia.Puoi farlo utilizzando l'opzione cache: false
nella pagina_Layouts.yml per il layout della pagina.