【发布时间】:2010-10-01 21:24:28
【问题描述】:
我对多个控制器使用相同的布局,在这个布局中我包含一个使用助手调用的菜单,如下所示:
<%= side_menu %>
我想做的是根据调用布局的控制器来改变 side_menu 的内容。在理想情况下,我可以在 application_controller.rb 和其他帮助文件中定义 side_menu,然后根据控制器选择适当的帮助;换句话说,是这样的:
# application_helper.rb
def side_menu
"generic menu This goes here"
end
# users_helper.rb
def side_menu
"menu for users goes here"
end
# guests_helper.rb
def side_menu
"menu for guests goes here"
end
这不起作用,因为在 Rails 3 中,所有帮助文件都已加载,我无法控制实际调用哪个 side_menu。如果有一个选项来加载 only application_helper.rb 和特定于控制器的帮助程序,那就太好了,但还没有(目前)。
根据控制器改变助手内容的最佳方法是什么?我目前在 application_helper.rb 中定义 side_menu 一次,然后检查控制器以查看要添加的内容。这感觉不对,因为这个问题几乎需要一个子类和覆盖的答案——由于 Rails 3 的“helper :all”行为,我不能这样做。建议?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3