2017-12-31 279 views
0

サインアップ(/ users/sign_up)しようとすると、エラーが発生します。NoMethodError in Registrations#new

NoMethodError in Registrations#new 
Showing /home/ubuntu/workspace/app/views/devise/registrations/new.html.erb where line #13 raised: 
undefined method `user_name' for #<User id: nil, email: "", created_at: nil, updated_at: nil> 

私はコースに続いて初心者です。私の友人もこのエラーを受けました。

class RegistrationsController < Devise::RegistrationsController 

    private 

    def sign_up_params 
    params.require(:user).permit(:email, :user_name, :password, :password_confirmation) 
    end 

    def account_update_params 
    params.require(:user).permit(:email, :user_name, :password, :password_confirmation, :current_password) 
    end 
end 

そして、ここでの工夫/登録/ new.html.erbのnew.html.erbファイルです:

私はregistration_controllerの私のコードがあるので、ここでそれを修正するかどうかはわかりません
<div class="registration-bg"> 
    <div class="container"> 
    <div class="row"> 
     <div class="col-md-4 col-md-offset-4"> 
     <div class="log-in panel"> 
      <div class="panel-heading"> 
      <h2>Create Your Account</h2> 
      </div> 
      <%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
      <%= f.error_notification %> 
      <div class="panel-body"> 
       <%= f.input :email, required: true, autofocus: true, label: false, placeholder: 'Email', input_html: { class: 'input-lg' } %> 
       <%= f.input :user_name, required: true, label: false, placeholder: 'User Name', input_html: { class: 'input-lg' } %> 
       <%= f.input :password, required: true, label: false, placeholder: 'Password', input_html: { class: 'input-lg' } %> 
       <%= f.input :password_confirmation, required: true, label: false, placeholder: 'Confirm Password', input_html: { class: 'input-lg' } %> 
       <%= f.button :submit, "Sign up", class: 'btn-lg btn-info btn-block' %> 
      </div> 
      <% end %> 
     </div> 
     </div> 
    </div> 
    </div> 
</div> 
+1

は、USER_NAME列であるように思わユーザーテーブルでは使用できません。 –

+0

@SampatBadheだから、モデルを生成するレーキを実行する必要がありますか? – Freddee

+0

あなたはすでにユーザーモデルを持っています。 'user_name'カラムを追加するためにマイグレーションを追加するだけです。 –

答えて

1

ActiveModelは、モデルで定義したフィールドを受け入れます。 あなたuserオブジェクトはこの

#<User id: nil, email: "", created_at: nil, updated_at: nil> 
あなたは、マイグレーションを実行することができます

のように見え、コントローラが再びNoMethodError文句を言うことはありません。その後、

rails g migration AddUserNameToUser user_name:string 

実行し、

rails db:migrate 
+0

レールg AdduserNameToUser user_name:文字列を実行すると、次のように表示されます。プロセス内のSpringプリローダーを介したRの結合6535 ジェネレータ 'AddUserNameToUser'を見つけることができませんでした。多分あなたは 'generator'、 'erb:mailer'または 'controller'を意味していたかもしれません もっと多くのオプションのために 'rails generate --help'を実行してください。 – Freddee

+0

私の悪い、私はタイプミスをしました。 これは 'rails g migration AddUserNameToUser user_name:string'です。 – PrimeTimeTran

関連する問題