设计注册不拉田地

时间:2013-10-20 14:12:40

标签: ruby-on-rails devise

好的,所以我已经安装了设计,我有我的注册页面,但当我输入内容时,它告诉我它是空的,不能为空。我已经验证了存在以及所有这些,所以我无法理解正在发生的事情。请看下面的表格,但我也注意到它闪烁的电子邮件/密码不能空白两次......

让我知道你还需要什么。

设计/ 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

2 个答案:

答案 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_pa​​rameters

之外,还需要这样做

例如

def post_params
   params.require(::sign_up).permit(:name, :profile_name, :email, :password)
end