0

gemsセルとdeclarative_authorization(Deviseと共に)を使用して、permited_toを含める方法を理解しようとしていますか?セルテンプレートに。これまでのところ、これをセルに追加しましたCell(Deviseはヘルパーとして機能します):

class SidebarCell < Cell::Rails
    include Devise::Controllers::Helpers
    helper_method :current_user
    include Authorization::AuthorizationHelper
    helper_method :permitted_to?



  def display(args)
    @object = args[:object]
    @notice = args[:notice]
    @alert = args[:alert]
    render
  end

end

しかし、declarative_authヘルパーモジュールが次のコードを使用しているという事実に爆撃されています。

def permitted_to? (privilege, object_or_sym = nil, options = {}, &block)
      controller.permitted_to?(privilege, object_or_sym, options, &block)
    end

そして明らかにこれは

undefined local variable or method `controller' for ...

アップデート:

もう少し考えてみると、これがCellsで機能するかどうかはわかりません。Declarative_authは、ルールの基礎となるコントローラーを必要としますが、Cellsはそのコントローラーとは何の関係もありません。コントローラへの参照をCellsに渡さない限り、この2つは互換性がないように見えますか?細胞は行く方法ではないと考え始めています。

4

1 に答える 1

1

これは、追加すると機能します

helper_method :controller

それはただ委任します:

def controller
  parent_controller
end

ご不便をおかけして申し訳ありませんが、Railsのヘルパーアーキテクチャ全体は最悪です:http://nicksda.apotomo.de/2011/10/rails-misapprehensions-helpers-are-shit/

于 2011-12-29T12:16:28.770 に答える