0
我正在構建一個Rails應用程序,用戶可以擁有更多地址。爲嵌套實體設計註冊
User has_many :addresses
Address belong_to :user
我使用Devise進行身份驗證。我想要一個用戶實體和第一個地址實體在用戶註冊時由一個表單創建。
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= f.email_field :email %><br />
<%= t.password_field :password %><br />
<%= f.fields_for resource.addresses do |a| %>
<%= a.text_field :street %>
<% end %>
<% end %>
但是我卻越來越
ActiveRecord的::協會未定義的方法 '街' :: CollectionProxy []
什麼是必須在控制呢?
感謝
編輯
我已經在用戶模式:
accepts_nested_attributes_for :addresses
而且我已經更新了我的控制器是這樣的:
class Users::RegistrationsController < Devise::RegistrationsController
# GET /resource/sign_up
def new
# super
build_resource({})
yield resource if block_given?
resource.addresses.build
respond_with resource
end
end
和看法:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= f.email_field :email %><br />
<%= t.password_field :password %><br />
<%= f.fields_for resource.addresses.first do |a| %>
<%= a.text_field :street %>
<% end %>
所以窗體顯示。但是,當我張貼的resource.addresses.first
仍然是空:
未定義的方法`MODEL_NAME」的零:NilClass
感謝
這就是答案!儘管我會添加控制器代碼,因爲他確實要求特定的控制器代碼。 – fbelanger
嗨,我已經'accepted_nested_attributes_for:addresses'。 看到我的更新以上請通過 –
你初始化了地址對象 –