用户模型中的未定义方法

时间:2015-08-08 21:04:36

标签: ruby-on-rails ruby-on-rails-4

我是铁道的初学者,我在注册表格中遇到了问题。

我在不同的表格中usersemailstake a look),但是用户注册表单中的email字段与所有其他字段(如用户名和密码)混合在一起

首先渲染没有问题,但在尝试保存时,如果发生任何错误(例如重复的usernameemail),请按照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

1 个答案:

答案 0 :(得分:1)

如果您通过belongs_to连接了这两个模型,则可以设置表单以更新/创建两个模型。

您必须使用accepts_nested_attributes_for声明用户。

请参阅此处的完整示例:

http://railscasts.com/episodes/196-nested-model-form-part-1

相关问题