我有一个辅助方法来帮助确定导航菜单项是否应该处于活动/非活动状态。
def events_nav_link
nav_item = 'Events'
if current_page?(events_path) # additional conditions here
# do nothing
else
nav_item = link_to nav_item, events_path
end
content_tag(:li, nav_item + vertical_divider, :class => 'first')
end
我希望此链接不仅对于events_path页面是非活动的,而且对于其他页面也是如此。问题是我不知道基于这条路线传递current_page?(路径)方法的参数:
map.list_events'/ events /:league /:year /:month /:day',: controller => 'events',:action => '列表'
此路线生成路径,例如/ pow或/ chow / 2011/09/25。联盟可以是战利品,食物或者哇。
答案 0 :(得分:2)
我喜欢使用添加/删除类和unwrap()停用链接的不显眼的JS方法,但它需要特定的规则。
Rails的方法是使用 link_to_unless_current 内置帮助器来突出显示和取消链接当前页面href。
答案 1 :(得分:0)
这就是我的所作所为:
<强> application_helper.rb:强>
def already_here?(this_controller,this_action)
controller_name == this_controller && action_name == this_action ? true : false
end
视图中的:
<%= already_here?("users","index") ? "Manage Users" : link_to("Manage Users", users_path, :title => "Manage Users.") %>
当然,如果你愿意的话,你可以通过将链接的标题和路径传递给帮助者来进一步抽象它,但这对我来说有点麻烦。
更新:没关系,请参阅mikhailov的答案 - 更清洁(为什么重新发明轮子?):)
答案 2 :(得分:0)
您正在寻找named routes。在routes.rb文件中,添加
:as => :foo
路线后。然后使用
if current_page(events_path) || current_page(foo_path)
在您的情况下。