2013-06-21 41 views
0

我試圖從部分'變體'中的'產品'模型調用變量。我可以從 '變種' 調用一個現有的變量使用:RAILS:在嵌套的部分表單中調用父模型

<%= f.object.product_id %> 

但我不能得到這個工作:

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

我可以這樣做:

<%= f.object.product %> 

但它返回#<Product:0x007fee2c9a8ec8>,我不知道該怎麼辦!

這裏的情況更詳細的概述:

我有「店」模式,HAS_MANY「產品」。每個'產品'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 %> 

而這裏的「/存儲/ _variant_fields」部分:

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

當你調用'id'時會發生什麼?它返回零嗎? – juanpastas

+0

當我調用'f.object.product.id'時,我得到這個運行時錯誤:「被調用的id爲零,如果你真的想要nil的id,使用object_id」 – JakeTy

回答

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顯示的內容。

+0

訪問部分:'product.id'?我仍然無法工作。它告訴我這是一個「未定義的局部變量或方法」產品 – JakeTy

+0

我已經更新了我的答案,我錯誤地認爲產品仍然在父表單的範圍內,我相信'f.object'仍然會在範圍內。 – plasticide

+0

產品:f.object沒有工作,我似乎無法得到部分內容傳遞給部分的任何東西! – JakeTy

相關問題