2017-12-31 55 views
0

(/ users/sign_up)을 (를) 등록하려고하면 오류가 발생합니다.NoMethodError in registered # 새

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

는 사용자 _ 열 사용자 테이블에서 사용할 수없는 것으로 보인다. –

+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 : string을 실행하면 다음과 같이 표시됩니다. 프로세스의 Spring 프리 로더를 통한 R 언닝 생성자 'AddUserNameToUser'를 찾을 수 없습니다. 아마도 'generator', 'erb : mailer'또는 'controller'를 의미했을 수도 있습니다. 더 많은 옵션을 위해'rails generate --help'를 실행하십시오. – Freddee

+0

내 잘못, 오타를 만들었습니다. 'rails g migration AddUserNameToUser user_name : string'이어야합니다. – PrimeTimeTran