2015-08-08 26 views
0

我是一名初學者,我在註冊表中遇到問題。用戶模型中未定義的方法

我在不同的表(take a look),但用戶登記表具有email字段與所有其它字段,諸如用戶名和密碼混合usersemails

起初呈現有沒有的問題,而是試圖挽救,如果發生任何錯誤(如重複usernameemail)我遵循的步驟here,在那裏說的時候(不要redirect_to,只是做render 'new'保持先前插入信息。這時候,它拋出一個錯誤說email不得而知。

我不想在users創建表的字段email,因爲我已經從原來的模式。我該如何解決這個問題去掉呢?

表格代碼

<%= 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

如果已通過belongs_to的,你可以設置你的表單更新/建立兩個模型連接兩個模型。

你必須聲明你的用戶accepts_nested_attributes_for

見一個完整的例子在這裏:

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

+1

@unmultimedio第二個問題似乎無關的第一。請考慮接受此答案,因爲它似乎解決了您的問題,併爲您的新問題創建了第二個問題。 –

相關問題