0

Alchemy CMS フレームワークを使用して、Rails サイト内にゲストブック モジュールを構築しようとしています。Alchemy を使用したモジュールのビルドに関するドキュメントはあまりないように思われるので、このページから離れます。

2 つのコントローラーを作成しました。1 つは管理者が使用する guestbook_controller.rb という名前で、これを app/controllers/admin の下に配置しました。

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

ゲストが app/controllers/guestbook_controller.rb の下にアクセスするためのもう 1 つ

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

私の意図は、ゲストブックの投稿が Alchemy 内の既存のページの 1 つの下に表示され、フォームもこのページに表示されることです。

ゲストブック モデルは次のようになります。

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

私が直面している最初の問題は、ルート /admin/guestbook に行くと「You are not Authorized」というエラーが表示されることですが、認証ルール ファイルはイニタライザーによって呼び出される必要があるのに、なぜこのエラーが発生するのでしょうか?

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

1 に答える 1

1

承認の問題は簡単です。あなたはただ書く必要があります:

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

もう 1 つ気づいたこと: フロントエンドの GuestbookController は Alchemy::BaseController から継承する必要があります。

また、ゲストブック エントリをレンダリングするページが Alchemy によってキャッシュされないようにする必要があります。cache: falseこれを行うには、ページ レイアウトの page_layouts.yml のオプションを使用します。

于 2012-08-16T21:50:10.610 に答える