在我的Rails 3.2应用程序中,我想根据正在查看的当前集合为列表元素分配一个活动类。
在我的助手方法中,我有类似下面的内容
def active_nav_tab(classname)
if controller.class == classname && controller.action_name == 'show'
"class=active"
end
end
它将控制器级别的正确类分配给顶部导航栏中包含的所有类别。如何修改辅助方法,使其仅选择当前集合为活动状态。
在我的视图层中
<% collections = Collection.all %>
<% collections.each do |collection| %>
<li <%= active_nav_tab(CollectionsController) %>>
<%= link_to colection.name, collection %>
</li>
<% end %>
答案 0 :(得分:2)
尝试修改辅助方法:
def active_nav_tab(classname)
if params[:controller] == classname && params[:action] == 'show'
"class=active"
end
end
在视图中:
<li <%= active_nav_tab(CollectionsController) %>>
<强>更新强>:
假设您单击列表中的 news 集合选项卡。这会采取show
操作,您可以执行以下操作:
@collection = Collection.find_by_name('news')
现在,在您的视图中,您只想将此集合显示为活动标签。你可以这样做:
//在选项卡列表的迭代中:
<% collections = Collection.all %>
<% collections.each do |collection| %>
<li <%= "class='active'" if collection.eql?(@collection) %>>
<%= link_to collection.name, collection %>
</li>
<% end %>
在此次迭代中,当&#39; news&#39;遇到集合,它将与@collection
相同,并且会添加active
类。
<li <%= "class='active'" if collection.eql?(@collection) %>>
希望这会有所帮助:)