Rails嵌套表单和引导选项卡

时间:2015-04-14 05:49:35

标签: ruby-on-rails twitter-bootstrap nested-forms

我有一个嵌套模型(exptype),我使用引导标签显示父(has_many)和它之间的experiment关系孩子(exptype)。

到目前为止,我的代码如下:

 <div role="tabpanel">
      <!-- Nav tabs -->
      <ul class="nav nav-tabs" role="tablist">
        <% @experiment.exptypes.each do |e| %>
          <li role="presentation"><a href="#exptype<%=e.id%>" aria-controls="exptype<%=e.id%>" role="tab" data-toggle="tab"><%=e.get_name%></a></li>
        <% end %>
      </ul>

      <!-- Tab panes -->
      <div class="tab-content">
        <%= f.fields_for :exptypes do |builder| %>
          <div role="tabpanel" class="tab-pane" id="exptype<%=builder.object.id%>">
            <%=builder.object.id%>
          </div>
        <% end %>
      </div>
    </div>

标签本身有效。但tab-content没有。对于每个标签,会发生什么,所有builder.object.id都会显示在每个标签中,而不会显示在各自的标签中。

我相信导致问题的fields_for循环。但是,我希望能够有一个允许添加新exptype的选项卡。

1 个答案:

答案 0 :(得分:1)

应该看起来像:

<div class="tab-content">
  <% @experiment.exptypes.each do |e| %>    
    <div role="tabpanel" class="tab-pane" id="exptype<%=builder.object.id%>">
      <%= f.fields_for :exptypes, e do |builder| %>        
        <%=builder.object.id%>
      <% end %>
    </div>
  <% end %>
</div>

fields_for不是循环,只会创建一个div。请注意,我还在e电话中添加了fields_for。看看这里: http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for