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