私はユーザーとプロファイルモデルを持っている問題に真剣に立ち往生しています。私が試したものは何でも、プロファイル属性のいずれに対しても検証がトリガーされていないようです
- プロファイルモデルはユーザーに属しています。ユーザーhas_oneプロファイル
- fields_forを使用した登録フォームで、いくつかのプロファイルフィールド(性別、都市と国)を表示します
- 何を試しても、性別と都市の検証を機能させることができません(fields_for profile fields)
私のフォーム:
- 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
検証を含む私のプロファイルモデルは次のようになります。
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
したがって、検証がチェックされているようです。しかし、エラースタイルは適用されません。また、プロファイルが無効です???? よくわかりませんが、それは