![](/img/trans.png)
[英]nil is not a symbol accepts_nested_attributes_for has_one association
[英]Rails accepts_nested_attributes_for with has_one association issue
我在接受具有has_one關系的嵌套屬性時遇到問題。
這是我的模型:
class User
has_one :shipping_address
accepts_nested_attributes_for :shipping_address
end
class ShippingAddress
belongs_to :user
end
並查看:
<%= form_for @user %>
<%= f.fields_for @user.shipping_address do |builder| %>
<%= builder.text_field :address %>
....
<% end %>
<%= f.submit 'submit' %>
<% end %>
我收到以下錯誤:
undefined method `model_name' for nil:NilClass
我知道這告訴我@ user.shipping_address為nil,但是我不知道為什么。 我也無法做到這一點:
@user.shipping_address.create(address: 'something')
因為@ user.shipping_address為nil。 我知道,如果關聯設置正確,我應該能夠執行此操作,但是我不知道為什么不正確。
有什么想法嗎?
在呈現表單之前,在您的控制器中構建收貨地址對象:
# Your current assignment
@user = User.where(...)
# Add this line:
@user.build_shipping_address
對於初學者,請嘗試以下操作:
<%= f.fields_for :shipping_address do |builder| %>
嘗試這個
不知道所有的細節,我這樣向自己解釋。 您已經使用“ form_for @user”啟動了表單上下文。 因此,在此上下文中已經知道用戶。 您可以使用:shipping_address訪問嵌套結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.