我在我的rails应用程序中使用Bootstrap,特别是,我想在以下意义上扩展Bootstrap的可用功能:
我的网站的每个用户都可以拥有多个配置文件,即模型用户has_many配置文件,我想在其用户/显示页面的选项卡上显示这些配置文件。每个配置文件都有一个名称属性,我想在选项卡本身上显示。
我以前使用典型的约定渲染这些配置文件:
在用户/显示页面:
<%= render 'shared/prof %>
共享/ _PROF:
<% if @prof_items.any? %>
<ol class="profiles">
<%= render partial: 'shared/prof_item', collection: @prof_items %>
</ol>
<%= will_paginate @prof_items %>
<% end %>
共享/ _prof_items
<li id="<%= prof_item.id %>">
...content...
</li>
users_controller:
...
def show
@user = User.find(params[:id])
@profiles = @user.profiles.paginate(page: params[:page])
@profile = @user.profiles.build
@prof_items = @user.prof.paginate(page: params[:page])
...
end
...
所以基本上我希望输出的html是这样的:
<div class="tabbable" style="margin-bottom: 5px;">
<ul class="nav nav-tabs" id="tabHeaders">
<li class="active">
<a href="#tab_<%=prof_item.id%>" data-toggle="tab">Name of first profile</a>
</li>
<li>
<a href="#tab_<%=prof_item.id%>" data-toggle="tab">Name of second profile</a>
</li>
#and so on for each prof_item
</ul>
<div class="tab-content" id="tabContent">
<div class="tab-pane active id="<%=prof_item.id%>">
#render first profile item
</div>
<div class="tab-pane" id="<%=prof_item.id%>">
#render second profile item
</div>
</div>
但是,我不确定user / show.html.erb中需要哪些代码,shared / _prof_item.html.erb中需要哪些代码,以及shared / _prof.html.erb中需要的代码。< / p>
答案 0 :(得分:1)
您可以使用rails工具来渲染集合来简化代码:
<%= render partial: 'shared/prof_item', collection: @prof_items) %>
<%= render partial: 'shared/profile', collection: @profiles) %>
shared / _profile.html.erb:#use local variable profile
<div class="tab-pane active" id="<%=profile.id%>">
#render first profile
</div>
shared / _prof_item.html.erb#使用本地变量prof_item
<li>
<a href="#tab_<%=prof_item.id%>" data-toggle="tab">Name of second profile item</a>
</li>