我是铁道的初学者,我在注册表格中遇到了问题。
我在不同的表格中users
和emails
(take a look),但是用户注册表单中的email
字段与所有其他字段(如用户名和密码)混合在一起
首先渲染没有问题,但在尝试保存时,如果发生任何错误(例如重复的username
或email
),请按照here步骤进行操作它说(不要redirect_to
,只需要render 'new'
来保留以前插入的信息。当它抛出错误时说email
是不知道的。
我不想在email
表格中创建字段users
,因为我已将其从原始模型中删除。我该如何解决这个问题?
<%= form_for :user, url: users_path do |f| %>
<p>
<%= f.label :username %>
<%= f.text_field :username %>
</p>
<p>
<%= f.label :name %>
<%= f.text_field :name %>
</p>
<p>
<%= f.label :email %>
<%= f.email_field :email # Error is thrown in this line %>
</p>
<p>
<%= f.label :password %>
<%= f.password_field :password %>
</p>
<p>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
</p>
<p>
<%= f.submit %>
</p>
def create
# render plain: params[:user].inspect
@user = User.new(user_registration_params)
if @user.save
email_params = {email: params[:user][:email], primary: true}
@email = Email.new(email_params)
@email.user = @user
if @email.save
redirect_to @user
else
@user.destroy
end
else
render 'new'
end
end
答案 0 :(得分:1)
如果您通过belongs_to连接了这两个模型,则可以设置表单以更新/创建两个模型。
您必须使用accepts_nested_attributes_for
声明用户。
请参阅此处的完整示例: