RAILS:在嵌套的部分表单中调用父模型

时间:2013-06-21 16:55:38

标签: ruby-on-rails ruby-on-rails-3 nested-forms

我试图在“变体”部分中调用“产品”模型中的变量。我可以使用以下方法调用'variant'中的现有变量:

 <%= f.object.product_id %>

但我不能让这个工作:

<%= f.object.product.id %>

我可以这样做:

<%= f.object.product %>

但它返回#<Product:0x007fee2c9a8ec8>,我不知道该怎么做!

以下是对情况的更详细概述:

我有'store'模型has_many'产品'。每个'产品'都有很多'变种'。变体是嵌套的。这是'/store/show.html.erb'文件:

  <% @store.products.each do |product| %>
    <tr>
      <td>
        <%= form_for(product) do |f| %>
          <%= f.fields_for :variants do |builder| %>
            <%= render 'variant_fields', f: builder %>
          <% end %>
      </td>
    </tr>
  <% end %>

这是'/ store / _variant_fields'部分:

<fieldset>
    </table>
       <tbody>
          <tr>
             <td><%= f.label :variant_name %><%= f.text_field :variant_name %></td>         
         </tr>
      </tbody>
    </table>
</fieldset>

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是将产品传递给您的部分:

<% render 'variant_fields', f: builder, product: f.object %>

在你的部分:

<fieldset>
    </table>
       <tbody>
          <tr>
             <td><%= f.label :variant_name %><%= f.text_field :variant_name %><%= product.inspect %></td>         
          </tr>
       </tbody>
     </table>
</fieldset>

查看product.inspect显示的内容。