使用gem、cell和declarative_authorization (以及Devise),我正在尝试如何包含permitted_to?添加到单元格模板中。到目前为止,我已经将这个添加到了我的cells Cell中( Devise one适用于它的助手):
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 ...更新:
经过进一步的思考,我不确定这是否适用于细胞。Declarative_auth需要控制器来作为其规则的基础,但Cells与该控制器无关。在我看来,这两者似乎是不兼容的,除非我将对控制器的引用传递到单元格中?开始认为细胞不是解决问题的方法。
发布于 2011-12-29 20:16:29
如果添加以下内容,则会起作用
helper_method :controller这只是委派:
def controller
parent_controller
end很抱歉给您带来不便,但是Rails中的整个helper架构都很糟糕:http://nicksda.apotomo.de/2011/10/rails-misapprehensions-helpers-are-shit/
https://stackoverflow.com/questions/6509247
复制相似问题