0

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

让我知道您可能还需要什么。

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

2 回答 2

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
于 2013-10-20T19:02:22.430 回答
0

您是否明确允许控制器中的参数?

除了 configure_permitted_pa​​rameters 之外,这也是必需的

例如。

def post_params
   params.require(::sign_up).permit(:name, :profile_name, :email, :password)
end
于 2014-02-03T05:58:38.853 回答