pam*_*mit 6 ruby-on-rails devise ruby-on-rails-4
所以我采用了Profile模型中为Devise用户描述的步骤? 我正在使用rails 4和ruby 1.9.3p448
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me, :profile_attributes
has_one :profile
accepts_nested_attributes_for :profile
protected
def profile
super || build_profile
end
end
Run Code Online (Sandbox Code Playgroud)
#
class Profile < ActiveRecord::Base
belongs_to :user
attr_accessible :uname, :manager
end
Run Code Online (Sandbox Code Playgroud)
#
<h2>Sign up...</h2>
<%= form_for resource, :as => resource_name, :url => registration_path(resource_name) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<%= f.fields_for :profile do |profile_form| %>
<h2><%= profile_form.label :uname %></h2>
<p><%= profile_form.text_field :uname %></p>
<h2><%= profile_form.label :manager %></h2>
<p><%= profile_form.text_field :manager %></p>
<% end %>
<div><%= f.submit "Sign up" %></div>
<% end %>
<%= render "devise/shared/links" %>
Run Code Online (Sandbox Code Playgroud)
#
仍无法为用户保存配置文件,这是输出:
Parameters: {"utf8"=>"?", "authenticity_token"=>"kG7S9lF4+5hm+ggmKA4LZyXrN4hsPf01jGQvKxgzGGI=", "user"=>{"email"=>"test1@test.test", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "profile_attributes"=>{"uname"=>"1", "manager"=>"1"}}, "commit"=>"Sign up"} **Unpermitted parameters: profile_attributes**
Run Code Online (Sandbox Code Playgroud)
我在Profiles控制器中做了什么?提前致谢
我找到了解决方案!在我的 users/registrations_controller.rb 中,我必须添加以下内容
before_filter :configure_permitted_parameters, if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) {|u|
u.permit(:email, :password, :password_confirmation, :remember_me,
profile_attributes: [:uname, :manager])}
end
Run Code Online (Sandbox Code Playgroud)
而且效果很好!
| 归档时间: |
|
| 查看次数: |
4568 次 |
| 最近记录: |