1

私は、ユーザーがタック「名前」と「説明」からなる任意の数の「タスク」を含むことができる「プロジェクト」を作成できるネストされたモデルフォームを持っています。これらのタスクは、jQueryを使用してユーザが動的に追加します。RailsダイナミックネストされたモデルフィールドのJavaScriptのバリデーション

私は現在、私はlivevalidationプラグインを使用しています、これらのタスクのそれぞれのフィールドに、クライアント側の検証を提供したいです。

問題は、フォームが送信されたときにRailsがその作業を行うために一意でなければならないので、入力フィールドに現在の時間に基づいて動的IDが与えられることです。

私はそれを見る方法、私は2つのオプションがあります。

  1. タスクが追加されるたびに、検証がに基づいてそのフィールドに対して設定することができるように、どういうわけか、ワイルドカードを受け入れるようにJavaScriptの検証を取得そのidの一部は変更されません。

  2. タスクが作成されるのと同時に、必要な検証javascriptをインラインで作成します。

上記は機能しますか?より良い選択肢はありますか?部分一致IDからバリデータに選択された要素をどのように取得するのですか?

おかげ

答えて

1

私はjQuery Validation Pluginを使用することをお勧めします。それはあなたが代わりにそのIDの属性名に基づいて検証を作成し、あなたが異なる形式のための規則の同じセットを使用することができます:

 
validation = { rules: { "name": "required", "description": "required" } } 
jQuery("#form-1").validate(validation); 
jQuery("#form-2").validate(validation); 

明示的なidを渡したい場合は、あなたを生成する機能を使用することができますルール:

 
function validation_rules(index){ 
    return { 
    rules: { 
     "name["+index+"]": "required", 
     "description["+index+"]": "required" 
    } 
    }; 
} 
+0

私は実際にこのプラグインを使っていましたが、エラーメッセージを配置するときにコントロールが不足していたので、私はlivevalidationを使用しました。 – dangerousdave

+2

jQueryプラグインのerrorPlacement属性を使用して、エラーメッセージの配置方法を上書きすることができます。つまり、ページの任意の場所に配置し、必要なCSSクラスを使用してスタイルを設定できます。 –

+0

あなたのソリューションを実装しようとしましたが、残念ながら、Railsのaccepts_nested_attributes_forは、 "id"と "name"の両方が一意である必要があります。例えば、 dangerousdave

関連する問題