好的,所以我已经安装了设计,我有我的注册页面,但当我输入内容时,它告诉我它是空的,不能为空。我已经验证了存在以及所有这些,所以我无法理解正在发生的事情。请看下面的表格,但我也注意到它闪烁的电子邮件/密码不能空白两次......
让我知道你还需要什么。
设计/ registrations.html.erb
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :name %><br />
<%= f.text_field :name %></div>
<div><%= f.label :profile_name %><br />
<%= f.text_field :profile_name%></div>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation%></div>
<br />
<div><%= f.submit "Sign up" %></div>
<% end %>
<%= render "devise/shared/links" %>
更新:显示以下内容的日志
Parameters: {"utf8"=>"✓", "authenticity_token"=>"JGpbRxL9lPqYh34mcvXSVby7rl3NPwt/YyTrmgqcx9E=", "user"=>{"name"=>"", "profile_name"=>"", "email"=>"", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
Unpermitted parameters: name, profile_name
我理解这一点,为什么名称,profile_name不被允许,这与attr_accessible有关吗?
解。即使安装了protected_attributes,您仍需要将以下内容放在
中class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :profile_name, :email, :password, :password_confirmation) }
end
end
答案 0 :(得分:0)
即使使用受保护的属性,您仍然需要将以下内容放入应用程序控制器中:
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :profile_name, :email, :password, :password_confirmation) }
end
end
答案 1 :(得分:0)
您是否明确允许控制器中的参数?
除了configure_permitted_parameters
之外,还需要这样做例如
def post_params
params.require(::sign_up).permit(:name, :profile_name, :email, :password)
end