2

私はrails 3.0.9、client_side_validation gemを使用していますが、手動でjsとcssファイルを使用してselect2 gemを使用しようとしました

https://github.com/ivaynberg/select2/tagsからファイルをダウンロードしました

プレゼンス検証を備えたシンプルなフォーム

    <%= javascript "validations/rails.live.validations", "select2.min"%>
    <%= stylesheet "select2"%>
    <script type="text/javascript" charset="UTF-8">
        $(document).ready(function() {
            $("#user_tag_ids").select2();
             });
    </script>
    <%= form_for @user, :validate => true do |f| %>
        <%= f.label :tag_ids %><%= mark_required(@user, :tag_ids) %>
        <%= f.collection_select(:tag_ids, @hobbies, :id, :display_name, {:prompt => "please select"}, :multiple => true) %>
        <%= f.submit %>
    <% end %>

セレクト ボックスのUIが期待どおりに変更されました。

しかし、値を選択せず​​にカーソルがフォーカスアウトすると、client_side_validation gem はエラー メッセージを表示するはずですが、メッセージは表示されません (error_field クラスでさえそのフィールドに設定されていません)。

select2 gem は無視/スキップしてエラー メッセージをレンダリングしますか?

送信ボタンをクリックすると、(client_side_validation gem) エラー メッセージが表示されます。

これを解決するアイデアはありますか?

4

2 に答える 2

0

JavaScript で現在の設定オブジェクトに検証を追加します。例

var validators = window[$('#place_order_form').attr('id')].validators

var input_name = $("#user_tag_ids").attr('name');
validators[input_name] = {"presence":{"message":"Must be filled"}}

参照: https://github.com/bcardarella/client_side_validations/issues/149

于 2013-03-27T08:31:18.683 に答える
0

私も同じ問題を抱えていました。コメントでお送りした解決策を試しましたが、これを行う必要があることがわかりました。

rails.validations.js ファイルでは、代わりに

 form.find(':input:enabled:visible[data-validate]').each(function() {

試す:

 form.find(':input[data-validate]').each(function() {
于 2013-01-23T14:31:09.670 に答える