2016-03-19 90 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語句來檢查控制器,然後參數,但它會遵循相同的基本大綱。