簡體   English   中英

Rails accepts_nested_attributes_for與has_one關聯問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM