当我提交用户注册时,POST
参数已通过,但我收到错误消息,指出电子邮件和密码不能为空。表单值也没有填写,用户也没有进入数据库
这是我的注册视图:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), class: "register-form fts") do |f| %>
<div class="row">
<div class="col-md-3 col-lg-3 col-sm-1 col-xs-1"></div>
<div class="col-md-6 col-lg-6 col-sm-10 col-xs-10">
<div class="column" style="text-align: center; margin: 0 auto;">
<%= devise_error_messages! %>
<div class="ui top attached message">
<h3 class="ui header">Register</h3>
</div>
<div class="ui large form attached segment" id="load-obj">
<div class="two fields">
<div class="field">
<%= f.text_field :firstname, "placeholder" => "First Name" %>
</div>
<div class="field">
<%= f.text_field :lastname, "placeholder" => "Last Name" %>
</div>
</div>
<div class="field">
<%= f.text_field :displayname, autocomplete: "off", "placeholder" => "Display Name" %>
</div>
<div class="field">
<%= f.text_field :username, autocomplete: "off", "placeholder" => "Username" %>
</div>
<div class="field">
<%= f.email_field :email, "placeholder" => "Email" %>
</div>
<div class="field">
<%= f.password_field :password, autocomplete: "off", "placeholder" => "Password" %>
</div>
<div class="field">
<%= f.password_field :password_confirmation, "placeholder" => "Confirm Password", id: 'pcf' %>
</div>
<%= f.submit "Sign up", class: "fluid ui green big button submit loader-detect", id: "reg_submit" %>
</div>
<div class="ui bottom attached message">
<%= render "devise/shared/links" %>
</div>
</div>
</div>
<div class="col-md-3 col-lg-3 col-sm-1 col-xs-1"></div>
<% end %>
</div>
</div>
这是我的Registrations Controller
class RegistrationsController < Devise::RegistrationsController
before_filter :update_sanitized_params, if: :devise_controller?
protected
def update_sanitized_params
devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:username, :email, :password, :password_confirmation, :firstname, :lastname, :displayname)}
devise_parameter_sanitizer.for(:account_update) {|u| u.permit(:firstname, :lastname, :email, :password, :password_confirmation, :current_password)}
end
end
这是我的日志文件:
Started POST "/users" for 127.0.0.1 at 2014-12-02 16:22:57 -0800
Processing by RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"hUFEC/J3sjj1XolGwEVCcaI1K8baF2gE4xQVDhv6CoU=", "user"=>{"firstname"=>"John", "lastname"=>"Doe", "displayname"=>"JDoe", "username"=>"jdoe", "email"=>"john@doe.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
WARNING: Can't mass-assign protected attributes for User: username, email, password, password_confirmation, firstname, lastname, displayname
(0.1ms) begin transaction
(0.1ms) rollback transaction
Rendered devise/shared/_links.erb (0.4ms)
Rendered devise/registrations/new.html.erb within layouts/application (3.1ms)
Completed 200 OK in 227ms (Views: 215.6ms | ActiveRecord: 0.2ms)
答案 0 :(得分:2)
有警告
WARNING: Can't mass-assign protected attributes for User: username, email,
password, password_confirmation, firstname, lastname, displayname
警告意味着没有使用提交的参数中的值成功分配这些属性。因此,您尝试保存的对象是一个空白对象。这就是为什么你会收到错误,说用户名和电子邮件不能为空。要解决您的问题,请查看已接受的this question答案。