2016-03-19 91 views
0

我试图用引导程序引导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 

更多上下文Companyhas_many :stocks :convertible_notes :options :warrants

什么我后:我想申请活动课,如果我在一个给定的页面上,或者如果我在其子页面上。所以,我不仅要股票ID为1的股票为.active,而且如果我在股东子页面上。

什么可能是完成此操作的最佳方法?提前致谢。

回答

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语句来检查控制器,然后参数,但它会遵循相同的基本大纲。