0

RailsアプリでBootstrapを使用しています。特に、Bootstrapのタブ可能な機能を次の意味で拡張したいと思います

。サイトの各ユーザーは複数のプロファイル、つまりモデルUser has_manyプロファイルを持つことができ、これらのプロファイルを表示したいと思います。ユーザー/表示ページのタブ。各プロファイルには、タブ自体に表示したい名前属性があります。

以前は、一般的な規則を使用してこれらのプロファイルをレンダリングしていました。
ユーザー/表示ページ:

<%= render 'shared/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に必要なコードがわかりません。

4

1 に答える 1

1

rails機能を使用してコレクションをレンダリングすることにより、コードを単純化できます。

<%= render partial: 'shared/prof_item', collection: @prof_items) %>
<%= render partial: 'shared/profile', collection: @profiles) %>

shared / _profile.html.erb:#ローカル変数プロファイルを使用

     <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> 
于 2012-04-24T04:06:50.127 に答える