2

私はこのクライアント側の検証ライブラリを使用しています: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 %>

これを機能させる方法について何かアイデアはありますか?

4

0 に答える 0