为Alchemy CMS创建自定义留言板模块

时间:2012-07-29 14:43:31

标签: ruby-on-rails ruby ruby-on-rails-3.2 alchemy-cms

我正在尝试使用Alchemy CMS框架在Rails站点内构建留言板模块。使用Alchemy进行模块构建的文档似乎并不多,所以我只是关注this page

我创建了两个控制器,一个管理员将使用名为guestbook_controller.rb并将其放在app / controllers / admin

module Admin
  class GuestbookController < Alchemy::Admin::ResourcesController
    def index
      "index"
    end
  end
end

和另一个访客在app / controllers / guestbook_controller.rb下访问

class GuestbookController < ActionController::Base
  def index
    "index"
  end
end

我的目的是留言簿帖子将显示在Alchemy内已有的一个页面下,并且此页面上也会显示一个表格。

留言板模型看起来像这样:

class GuestbookEntry < ActiveRecord::Base
  attr_accessible :location, :message, :name
end

我的路线文件如下所示:

resources :guestbook

namespace :admin do
  resources :guestbook
end

mount Alchemy::Engine => '/'

我在config下有一个名为authorization_rules.rb的文件,如下所示:     授权

  role :admin do
    has_permission_on :guestbook, :to => [:manage]
  end

end

我遇到的第一个问题是,转到route / admin / guestbook会给我一个错误'你没有被授权',但授权规则文件应该由我的initalizer调用,所以为什么我得到这个错误?

# 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'))

1 个答案:

答案 0 :(得分:1)

授权问题很简单。 你只需要写:

has_permission_on :admin_guestbook, :to => [:manage]

我注意到的另一件事:你的前端GuestbookController应该继承自Alchemy :: BaseController。

并且您应确保要在其上呈现留言簿条目的页面,不得由Alchemy缓存。您可以使用page_layouts.yml中的cache: false选项为页面布局执行此操作。