【发布时间】:2014-11-07 10:20:29
【问题描述】:
我的应用拥有普通用户和管理员。它有一些显示小部件的渲染助手:
module ApplicationHelper
def widget
"widget"
end
end
对于管理员,这些小部件有扩展版本:
module AdminHelper
def widget
"admin-widget"
end
end
通过config.action_controller.include_all_helpers = false,该应用默认配置为不包含所有助手。
当管理员查看页面时 - 相同的控制器,相同的视图模板 - 我想通过使用其 AdminHelper 版本重载助手来呈现它的扩展版本。如果当前登录的用户是管理员,我如何在每个请求的基础上使用 AdminHelper 重载 ApplicationHelper?
我试过了
class ApplicationController < ActionController::Base
before_action :include_backend_helpers
protected
def include_backend_helpers
self.class.helper "pica/backend" if admin_signed_in?
end
end
但这不起作用,除非在请求之间重新加载 ApplicationController。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 actioncontroller