有没有办法在Controller concern
内部创建变量,如下所示,并使用其他控制器中的@sidebar_menu_item
,包括Application Controller
?
module Menu
extend ActiveSupport::Concern
class << self
def add_sidebar_menu(top_level, menu_class, menu_items, expanded = false)
@sidebar_menu_item ||= []
@menu_items ||= []
@sidebar_menu_item << [top_level, menu_class, @menu_items.concat(menu_items), expanded]
end
end
end
答案 0 :(得分:0)
如果您想让它在所有控制器中都可用,常见的模式是将其添加到ApplicationController
并通过继承共享它。
方法add_sidebar_menu
提出了@ SG86问的问题。如果它只适用于视图层,为什么不在这里使用帮助器?
因为你在谈论&#34;共享一个变量&#34;我假设你也试图在控制器中存储状态。如果是这样的话,请不要这样做。使用会话,cookie或数据库。