7

Railsでチェックボックスがチェックされていることをどのように検証しますか? チェックボックスは、エンド ユーザーの同意のためのものです。そしてそれはモーダルウィンドウにあります。

チェックボックスがあるとしましょう:

<%= check_box_tag '' %>


これをどこでどのように検証すればよいですか?

ここでレールのチェックボックスの検証に関するほとんどの投稿を見てきましたが、どれも私のニーズに合っていません。

4

3 に答える 3

19

追加する

validates :terms_of_service, :acceptance => true

あなたのモデルにそれを行う必要があります。詳細とオプションについては、こちらをご覧ください。

ただし、条件を受け入れることがモデルのフォームの一部ではない場合は、次のようにクライアント側の検証、つまり JavaScript を (jQuery で) 使用する必要があります。

function validateCheckbox()
{
    if( $('#checkbox').attr('checked')){
      alert("you have to accept the terms first");
    }
}

次のように、ビューにスクリプト ファイルを追加できます。

<%= javascript_include_tag "my_javascipt_file" %>

クリックで関数をトリガーします。

<%= submit_tag "Submit", :onclick: "validateCheckbox();" %>

編集: 次のように、チェックボックスに id を割り当てることができますcheck_box_tag :checkbox。HTML は次のようになります。その他のオプションについては、これらの例<input id="checkbox"を参照してください。

于 2013-04-26T13:36:39.263 に答える
0

すでに述べたことに加えて、カスタム エラー メッセージを追加したい場合は、フォームに次を追加できます。

f.input :terms_of_service, as: :boolean

次に、モデルに以下を追加します。

validates :terms_of_service, acceptance: { message: "must be accepted"}

エラー メッセージは、デフォルトではフィールド名で始まり、その後にカスタム メッセージが続きます (サービス利用規約 [カスタム メッセージ] など)。私が便利だと思ったのは、ラベルに利用規約へのリンクを含めて、ユーザーが簡単にアクセスして同意内容を確認できるようにすることです。

f.input :terms_of_service, as: :boolean, label: "I agree to the #{link_to "terms of service", [TERMS AND CONDITIONS PATH]}".html_safe
于 2020-08-28T16:15:58.067 に答える