我尝试使用引导程序设置rails应用程序样式navigation tabs.我的应用程序是这样的,我不仅有页面,还有子页面。标签代表超级页面(可以这么说)。见下文:
<ul class="nav nav-tabs">
<li class="tab"><%= link_to "Contacts", edit_entities_path(@company) %></li>
<% for stock in @company.stocks.each %>
<% if stock.id %>
<li class="tab"><%= link_to "#{stock.security_series} #{stock.security_class} Stock", stock_stockholders_path(stock) %></li>
<% end %>
<% end %>
<% for option in @company.options.each %>
<% if option.id %>
<li class="tab"><%= link_to "#{option.security_series} #{option.security_class} Options", option_optionees_path(option) %></li>
<% end %>
<% end %>
<% for warrant in @company.warrants.each %>
<% if warrant.id %>
<li class="tab"><%= link_to "#{warrant.security_series} #{warrant.security_class} Warrant", warrant_warrantees_path(warrant) %></li>
<% end %>
<% end %>
<% for note in @company.convertible_notes.each %>
<% if note.id %>
<li class="tab"><%= link_to "#{note.security_series} #{note.security_class} Note", convertible_note_convertible_notees_path(note) %></li>
<% end %>
<% end %>
</ul>
标签表示任意数量的股票,convertible_notes,期权和权证
resources :stocks do
resources :stockholders
end
resources :convertible_notes do
resources :convertible_notees
end
resources :options do
resources :optionees
end
resources :warrants do
resources :warrantees
end
有关更多背景信息Company
has_many :stocks :convertible_notes :options :warrants
我之后的内容:如果我在某个页面上,或者如果我在其子页面上,我想申请活动课程。因此,我不仅希望ID 1标签的广告资源为.active
,如果我在其上,也可以在股票子页面上显示。
实现这一目标的最佳方法是什么?提前谢谢。
答案 0 :(得分:0)
想出来。
基本上对于每个项目,我创建了一个辅助方法来比较加载的参数id与每个循环中每个模型的id。所以以股票为例,在视图中,我在类中添加了帮助器:
<% for stock in @company.stocks.each %>
<% if stock.id %>
<li class="tab <%= stock_nav(params, stock.id) %>"><%= link_to "#{stock.security_series} #{stock.security_class} Stock", stock_stockholders_path(stock) %></li>
<% end %>
<% end %>
我将帮助器添加到我的应用程序助手:
def stock_nav(params, stock)
"active" if params[:controller]=="stockholders" && stock.to_s==params[:stock_id].to_s
end
(因为它碰巧两个页面都是在股东控制器上运行,我应该在问题中提到)如果他们不是一个人只会添加另一个if语句来检查控制器然后参数但是它会跟随相同的基本轮廓。