开发者

How to mark a link in a layout menu as "active" in rails?

开发者 https://www.devze.com 2023-01-02 19:33 出处:网络
I 开发者_开发技巧have a ul filled with links in my layout/application.html.erb and want the current location link be marked with class=\"active\".

I 开发者_开发技巧have a ul filled with links in my layout/application.html.erb and want the current location link be marked with class="active".

Now I'm using:

<%= link_to 'About Us', { :controller => 'aboutus' }, :class => "menu#{' active' if params[:controller] == 'aboutus'}" %>

But it looks pretty nasty to me.

Anyone has a better idea?


The link_to_unless_current method doesn't actually create a link, nor does it add a class of active. If you'd still like to do that, you can use the current_page method to check if the current page matches the route you specified:

<ul id="main_nav">
  <li><%= link_to "Search", search_path, :class => ('active' if current_page?(search_path)) %></li>
</ul>

Or if you'd like to add the class on the wrapping element:

<li class="<%= 'active' if current_page?(search_path) %>">
  <%= link_to "Search", search_path %>
</li>


You can use the helper method similar to link_to

its called "link_to_unless_current".

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html ( find the details here )

HTH


An example for a root path with a li tag, i tried to do it with a content_tag, but no luck for the if case in a elegant way

<li<%= " class='active'".html_safe if current_page?(root_path) %>>
    <%= link_to "Home", root_path %>
</li>

i have some issues when i keep the class in blank with bootstrap(if i remember well)

0

精彩评论

暂无评论...
验证码 换一张
取 消