Ruby on rails 设置<;李>;基于URL参数的Rails中的活动类
我有一个这样的导航:Ruby on rails 设置<;李>;基于URL参数的Rails中的活动类,ruby-on-rails,Ruby On Rails,我有一个这样的导航: <nav> <ul class='nav nav-pills'> <li> <%= link_to 'link1', '#' %> </li> <li> <%= link_to 'link1', '#' %> </li> </ul> </nav> 我的路由、视图和控制器设置为
<nav>
<ul class='nav nav-pills'>
<li>
<%= link_to 'link1', '#' %>
</li>
<li>
<%= link_to 'link1', '#' %>
</li>
</ul>
</nav>
我的路由、视图和控制器设置为root\u url/../action
和root\u url/../action/:page\u id
都将呈现相同的视图,实例变量@page
将基于:page\u id
参数设置或设置为操作根的指定默认值。稍后在视图中,我将呈现一个与@page
名称匹配的分部
我试图做的是在链接文本与@page
的值匹配的上设置class='active'
我最初的倾向是保持干燥,设置窗口。page_id
匹配@page
,并使用CoffeeScript添加类,但这给了我在页面加载和设置类之间非常明显的延迟
有人知道实现这一点的最佳方法吗?现在我把嵌入式ruby放在每个
元素中,这是非常不受欢迎的。从另一篇S.O.文章中借用并稍加修改,以满足您的需要
用法如下:
nav_link 'Home', @page
从另一个S.O.职位借用并稍加修改,以满足您的需求
用法如下:
nav_link 'Home', @page
扩展99英里的答案,我把它放在相应的帮助程序中:
def nav_link(link_text, link_path, current_page)
content_tag(:li, class: ('active' if link_text.downcase.gsub(' ', '_') == current_page) ) do
link_to link_text, link_path
end
end
这样,非活动的
元素就不会有空类,即使链接文本中包含空格,它也可以工作
在视图中使用,如:
<%= nav_link "My Page", page_path('my_page'), @page %>
那你就可以了
<%= nav_link "My Link", page_path('my_page'), 'my_page', @page %>
根据99英里的答案展开,我将其放在相应的帮助程序中:
def nav_link(link_text, link_path, current_page)
content_tag(:li, class: ('active' if link_text.downcase.gsub(' ', '_') == current_page) ) do
link_to link_text, link_path
end
end
这样,非活动的
元素就不会有空类,即使链接文本中包含空格,它也可以工作
在视图中使用,如:
<%= nav_link "My Page", page_path('my_page'), @page %>
那你就可以了
<%= nav_link "My Link", page_path('my_page'), 'my_page', @page %>
展开Zeiv的答案,您只需比较url即可:
助手方法:
def nav_link(link_text, link_path)
content_tag(:li, class: ('active' if link_path == url_for(only_path: true)) ) do
link_to link_text, link_path
end
end
现在,在视图中可以执行以下操作:
<%= nav_link "Some Page", some_page_path %>
展开Zeiv的答案,您只需比较url即可:
助手方法:
def nav_link(link_text, link_path)
content_tag(:li, class: ('active' if link_path == url_for(only_path: true)) ) do
link_to link_text, link_path
end
end
现在,在视图中可以执行以下操作:
<%= nav_link "Some Page", some_page_path %>
我认为我们使用助手的方法是正确的,但不幸的是,如果没有参数[:page_id]
只需根据您的需要修改它,根操作案例就无法使用它。然后传递@page,并将其与链接文本进行比较。我修改了答案。将我的修改作为答案提交。谢谢你的帮助!我认为我们使用助手的方法是正确的,但不幸的是,如果没有参数[:page_id]
只需根据您的需要修改它,根操作案例就无法使用它。然后传递@page,并将其与链接文本进行比较。我修改了答案。将我的修改作为答案提交。谢谢你的帮助!可能的重复可能的重复