带有rails子页面的Bootstrap导航选项卡

时间:2016-03-19 08:39:09

标签: ruby-on-rails twitter-bootstrap ruby-on-rails-4 routing

我尝试使用引导程序设置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,如果我在其上,也可以在股票子页面上显示。

实现这一目标的最佳方法是什么?提前谢谢。

1 个答案:

答案 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语句来检查控制器然后参数但是它会跟随相同的基本轮廓。