0

使用 gems 单元格和 declarative_authorization(连同设计),我试图弄清楚如何包含 allowed_to?进入单元格模板。到目前为止,我已经将它添加到我的单元格中(设计一个为它的助手工作):

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?开始认为细胞不是要走的路。

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 回答