アプリケーションレールがあり、devise で client_side_validations gem を使用してデバイス登録フォームを検証します
//account.rb
has_one :user
validates :username, presence: true, uniqueness: true
//user.rb
belongs_to :account
validates :email, presence: true, uniqueness: true
//new.html.erb
<%= form_for(@user, :url => registration_path(resource_name), :validate => true) do |f| %>
<%= f.fields_for :account, :validate => true do |inner_form|%>
<div class="field">
<%= inner_form.label :username, "Username" %><br />
<%= inner_form.text_field :username %>
</div>
<% end %>
<div class="field">
<%= f.label :email, "Email" %>
<%= f.email_field :email %>
</div>
<div>
<%= f.submit "Sign up" %>
</div>
<% end %>
検証は電子メールフィールドでは正常に機能しますが、ユーザー名では機能しません..助けてください、、、ありがとう
更新--- 表示を検証しますが、これはネストされたフォームではありません
:account を @account に変更
<%= f.fields_for :account, :validate => true do |inner_form|%>
に
<%= f.fields_for @account, :validate => true do |inner_form|%>
送信すると、Account(#27129348) expected, got ActiveSupport::HashWithIndifferentAccess(#26695068) というエラーが表示されます
検証が機能しない場合、html コード
<input id="user_account_attributes_username" name="user[account_attributes][username]" size="30" type="text" data-validate="true">
働いたことを検証する
<input id="user_account_username" name="user[account][username]" size="30" type="text" data-validate="true">
問題
user_account_attributes_username
ユーザー[アカウント属性][ユーザー名]
働いた
user_account_username
ユーザー[アカウント][ユーザー名]