我严重卡在我有用户和个人资料模型的问题上。无论我尝试什么,似乎都不会为任何 Profile 属性触发验证
- 配置文件模型属于用户。用户 has_one 个人资料
- 在注册表单上使用 fields_for 显示一些个人资料字段(性别、城市和国家)
- 无论我尝试了什么,我都无法让性别和城市的验证工作( fields_for 个人资料字段)
我的表格:
- title t(:title, :scope => :register)
%h1= yield(:title)
= simple_form_for(resource, :as => resource_name, :html => { :class => 'form-horizontal' } , :validate => true , :url => registration_path(resource_name)) do |f|
= f.input :username, :label => t(:username)
= f.input :email, :label => t(:email),
:hint => t(:hint_email_visible)
= f.input :password, :label => t(:password), :require => true
= f.input :password_confirmation, :label => t(:password_confirm)
- resource.build_profile
= f.fields_for :profile do |f|
#div
= f.hidden_field :form, :value => "signup"
.clear
= f.input :gender, :collection => [['Male', 'male'], ['Female', 'female']],
:as => :radio
= f.input :city,
:readonly => "readonly",
:label => t(:city)
.ruler
= f.input :country,
:label => "Your country",
:collection => [DataCountry.where(:code => 155).first],
:value => @city,
:id => "country",
:name => "country"
.clear
= f.button :submit, t(:submit, :scope => :register) + " »"
我的用户模型有这个:
accepts_nested_attributes_for :profile
我的带有验证的 Profile 模型如下:
validates_presence_of :gender
validates_presence_of :city
validates_presence_of :country
我的参数:
-- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
utf8: ✓
authenticity_token: <mytokenhere>
user: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
invite_code: ''
username: username
email: ''
password: ''
password_confirmation: ''
profile_attributes: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
form: signup
gender: male
dob(3i): '9'
dob(2i): '7'
dob(1i): '1942'
city: 'somevalue'
country: 'somevalue'
commit: Register »
action: create
controller: registrations
Rails 控制台可以:
User.new
=> #<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, password_salt: nil, confirmation_token: nil, confirmed_at: nil, confirmation_sent_at: nil, unconfirmed_email: nil, failed_attempts: 0, unlock_token: nil, locked_at: nil, authentication_token: nil, username: nil, is_blocked: nil, is_deleted: nil, role: nil, slug: nil, created_at: nil, updated_at: nil, last_seen: nil, credits: nil, invite_code: nil, is_moderated: nil, locale: nil, status: nil, login_token: nil>
Profile.new
=> #<Profile id: nil, user_id: nil, gender: nil, country: nil, state: nil, city: nil, status: nil, counter_cache: nil>
-- 2012 年 7 月 19 日更新
我添加了
- @user.errors.full_messages.each do |message|
= message
.clear
到表单查看到底发生了什么,这会引发以下错误列表:
Email can't be blank
Email can't be blank
Password can't be blank
Password can't be blank
Profile city can't be blank
Profile gender can't be blank
Profile is invalid
Username can't be blank
Password confirmation can't be blank
因此,似乎检查了验证....但是没有应用错误样式!个人资料也无效???我不确定,但这是否指