gpt4 book ai didi

ruby-on-rails - 如何在注册期间构 build 计嵌套资源?

转载 作者:行者123 更新时间:2023-12-04 18:10:21 25 4
gpt4 key购买 nike

在使用 Devise 注册新用户时,我需要同时为这个新用户创建一个新的家庭对象链接(该用户是一家之主)。

我的家庭模型:

belongs_to user

我的用户模型:

attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :family
has_one :family
accepts_nested_attributes_for :family

在设计/注册/new.html.erb

<%= simple_form_for([resource, Family.new], :as => resource_name, :url =>     registration_path(resource_name), :html => {:class => 'form-vertical' }) do |f| %>
<%= f.error_notification %>
<%= display_base_errors resource %>
<%= f.input :name, :autofocus => true %>
<%= f.input :email, :required => true %>
<%= f.input :password, :required => true %>
<%= f.input :password_confirmation, :required => true %>

<% f.fields_for :family do |family_form| %>
<p><%= family_form.label :name %></p>
<p><%= family_form.text_field :name %></p>
<% end %>

<%= f.button :submit, 'OK', :class => 'btn-primary' %>
<% end %>

但这行不通,我发现了几个这样的问题,但我没能解决。

有什么想法吗?

更新 1

我收到以下错误:

undefined method `email' for #<Family:0x007f892a12c310>

Family 是一个没有任何电子邮件,只有一个名字的模型。我只需要能够在创建新用户时创建一个带有名称的新 Family 对象(并将其链接到用户)。

更新 2

我在注册 Controller 中添加了 resource.build_family。家庭对象已正确创建并与用户相关联(我可以在 new.html.erb 中显示 <%= resource.family %> 以进行调试),但仍然没有为家庭显示任何形式。

最佳答案

<%=fields_for

中需要等号
<%= f.fields_for :family do |family_form| %>
<p><%= family_form.label :name %></p>
<p><%= family_form.text_field :name %></p>
<% end %>

并且在您的用户模型中,您需要使 :family_attribues 可访问而不是 :family

attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :family_attributes
has_one :family
accepts_nested_attributes_for :family

关于ruby-on-rails - 如何在注册期间构 build 计嵌套资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14829301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com