1

私が言えることから、私の質問は、以前にこの問題に遭遇した人にとっては非常に簡単に答えられるはずです...

レールにサインアップフォームがあり、送信ボタンがクリックされたときに正しく入力されていないフィールドが強調表示されます(関連するエラーメッセージも表示されます)。フォームには、入力フィールドとチェックボックスのみが含まれます。フォームの各部分でエラーが適切に表示されますが、ユーザーがチェックボックスをオンにせずにフォームを送信しようとすると、チェックボックスのラベルが赤で適切に強調表示されません。

チェックボックスをオフのままにしたときにチェックボックスラベルを強調表示するには、コードで何を変更する必要がありますか?

これはビューコードです:

<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: f.object %>

  <%= f.label :name %>
  <%= f.text_field :name %>

  <%= f.label :email %>
  <%= f.text_field :email %>

  <%= f.label :password %>
  <%= f.password_field :password %>

  <%= f.label :password_confirmation, "Password confirmation" %>
  <%= f.password_field :password_confirmation %>

  <br>
  <%= f.check_box :terms_of_service %>
  <label_for="user_terms_of_service">I agree to the <%= link_to "Terms of Service", policies_path %>
  </label>
  <br><br>

  <%= f.submit "Create my account", :class => "btn btn-large btn-primary" %>
<% end %>

また、これは、フォームが不適切に送信された後のチェックボックスのFirebugで確認できることです。問題は、class="field_with_errors"のdivがチェックボックスラベルの前に配置されていることです。

<br>
<input type="hidden" value="0" name="user[terms_of_service]">
<div class="field_with_errors">
<input id="user_terms_of_service" type="checkbox" value="1" name="user[terms_of_service]">
</div>
<label_for="user_terms_of_service">

アレクサンドラ、助けてくれてありがとう

4

2 に答える 2

2

フォームでの私のアプローチは、可能な場合はレール標準を試して使用することです。

ユーザーモデルに追加します。

validates_acceptance_of :terms
attr_accessible :terms

あなたの見解では、

<%= form_for @user do |f| %>
  ...
  <%= f.check_box :terms %>
  ...
<% end %>

利用規約に同意していないユーザーにアクセスを許可する場合を除いて、実際にはユーザーテーブルに追加の列は必要ありません。利用規約は、そもそも登録を完了できないため存在しません。

于 2012-09-19T02:28:05.173 に答える
1

ラベルの構文が正しくありません。試す

<%= f.label :user_terms_of_service, "I agree to the #{link_to 'Terms of Service', policies_path}.".html_safe %>
于 2012-09-19T01:38:55.923 に答える