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'。 看到我的更新以上请通过 –
你初始化了地址对象 –