导航栏,一般要告诉用户,你现在在哪里
比如 ruby-china,就是li.active
Ruby-China 是用的render_list
, 不过这个略复杂,我不是太会用……
https://github.com/xdite/bootstrap-helper/blob/master/lib/bootstrap_helper/helper.rb
我自己有两种 link 需要添加.active
, 一种是一般的 path
使用的场景也就和上面一样
# Usage: <%= nav_link 'Trending', pop_path %>
def nav_link(link_text, link_path, additional_class = nil)
recognized = Rails.application.routes.recognize_path(link_path)
if recognized[:controller] == params[:controller]
if recognized[:controller] != 'static_pages'
# 对于一般如TopicsController, 在index, new, edit等action下面,都显示active css
class_name = 'active'
else
# 对于StaticPagesController下面杂七杂八的action, 需要全部匹配
class_name = 'active' if recognized[:action] == params[:action]
end
else
class_name = nil
end
class_name = [class_name, additional_class ] if additional_class
content_tag(:li, :class => class_name) do
link_to link_text, link_path
end
end
另外一种是生成params[:sort]
的,应用于页面上本身的一些小的排序,如 tab 等等
使用场景是
以及 Rei 大的 Codecamp,我这个就是按他那个改的
# Usage: <%= selector_link('This is New', tab: 'new') %>
# Generate: link_to link_text, url_for(tab: 'new'), class: ('active' if params[:tab] == 'new')
def selector_link(link_text, link)
key = link.keys.first
class_name = 'active'if params[key].to_s == link[key]
link_to link_text, url_for(link), class: class_name
end
不知道大家是怎么写的?