私はこのクライアント側の検証ライブラリを使用しています:https ://github.com/bcardarella/client_side_validationsを単純なフォームと一緒に使用して、Rails3.2.12でフォームをレンダリングします。
2つの属性を持つモデルがcancelled:bool
ありcancelled_reason:string
ます。cancelled
が設定されたら、理由も強制的に設定したいので、簡単な検証でこれを行います。
validates :cancelled_reason, presence: true, if: "cancelled"
cancelled = true
次に、の非表示の入力とのテキストフィールドを含むフォームがありますcancelled_reason
。私がやりたいのは、a)このフィールドが存在するかのようにレンダリングすることです:true(「必須の星」が横にある)b)クライアント側の検証がこのフィールドに対して適切に機能するようにします。
クライアント側の検証のドキュメントに従って、これを実現するためにいくつかのことを試みました。
<%= f.input :cancelled_reason, validate: true do %>
<%= f.input :cancelled_reason, validate: { presence: true } do %>
<%= f.input :cancelled_reason do %>
<% f.text_field :cancelled_reason, validate: { presence: true } %>
<% end %>
これらはすべて、フォームのjavascriptに空の'validation'配列を生成するため、とにかく送信できます。また、フィールドが必要なため、フィールドのレンダリングにも失敗します。
また、フォームをレンダリングする前に、手動で「キャンセル」フィールドをtrueに設定しようとしましたが、これも正しく機能しませんでした。
<% model.cancelled = true %>
<% simple_form_for @model, validate: true do |f| %>
...
<% end %>
これを機能させる方法について何かアイデアはありますか?