如何在轨道上切换红宝石,例如:
case controller "home"
do home
case controller "about"
do about
else
do home
我目前有这段代码:
<% case current_page(:controller) %>
<% when "forums" %>
<%= render :partial => 'shared/sidebar/sidebar_forums' %>
<% when "events" %>
<%= render :partial => 'shared/sidebar/sidebar_events' %>
<% else %>
<%= render :partial => 'shared/sidebar/sidebar_frontpage' %>
<% end %>
答案 0 :(得分:2)
引自http://rails.nuvvo.com/lesson/6371-action-controller-parameters:
params
哈希将始终包含:controller
和:action
个键,但您应该 请使用方法controller_name
和action_name
来访问这些值。路由定义的任何其他参数,例如:id
也将可用。
所以你绝对应该可以通过params[:controller]
访问它,如果controller_name
方法在视图范围内,你应该使用它。
至于切换语法本身,你需要像
那样做case controller_name
when "home"
do_home
when "about"
do_about
else
do_default
end
你可以做一些黑客攻击并获得
case true
when controller "home"
do_home
when controller "about"
do_about
else
do_default
end
但为什么?
答案 1 :(得分:1)
每当你不得不做这样的事情时,这意味着应用程序设计有些不对劲。并不是说我过去从未这样做过,但我现在不这样做,而且不满意。
如果你根据他们的职责适当命名控制器,而不是做你现在正在做的事情,毕竟他们只是类并处理来自用户的请求等,那么你可能不必这样做声明。例如,在命名空间之后,您可能会为视图使用不同的部分布局,这可能不需要您在控制器/视图中进行此切换,从而保持代码清洁。