当您尝试注册(/ users / sign_up)时,出现错误。
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>
我是一门课程的初学者。我的朋友也收到了这个错误。我不知道如何修复它所以这是我的registration_controller代码:
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文件:
<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>
答案 0 :(得分:1)
ActiveModel接受您在模型上定义的字段。
您的user
对象看起来像这样
#<User id: nil, email: "", created_at: nil, updated_at: nil>
您可以运行迁移,控制器不会再次抱怨NoMethodError
。
rails g migration AddUserNameToUser user_name:string
然后跑,
rails db:migrate