0

希望するカスタムエラー表示が表示されないようです。config/initializers/ client_side_validations.rbのテキストのコメントを解除し、ドキュメントの説明に従ってrails.validations.actionView.jsを作成しましたが、フォームをデバッグするときにカスタマイズされたファイルを使用するように見えません(rails.validations.jsファイルにいくつかのブレークポイントを配置しましたが、そこで追加または削除が行われていないため、おそらくそれが問題です。すべてのファイルが読み込まれます資産パイプラインを通じて、そして私の知る限りでは完全に。

gem 'rails', '3.2.8'
gem 'formtastic'
gem 'client_side_validations' , '3.2.0'
gem 'client_side_validations-formtastic'

actionView.js

window.ClientSideValidations.formBuilders['ActionView::Helpers::FormBuilder'] = {
add: function(element, settings, message) {
// custom add code here
console.log('added')
 },
remove: function(element, settings) {
console.log('removed');}}

_form.html.erb

<%= semantic_form_for @sponsorship, :validate => true do |f| %>
  <%= f.inputs do %>
    <%= f.input :title, :hint => "Give us a title" %>
     <%= f.input :bio %>
    <%= f.input :blurb %>
    <%= f.input :category_id, :as => :select, :collection => Category.all, :label_method => :title %>
    <%= f.input :event_id, :as => :select, :collection => Event.all, :label_method => :title %>
    <%= f.input :date_end, :start_year => 2012, :as => :date_picker %>
    <%= f.input :funds_needed %>
    <%= f.input :user_id, :as => :hidden, :input_html => { :value => current_user.id } %>
    <%= f.input :agree_to_terms %>
    <%= f.validate %>
  <% end %>

  <%= f.actions do %>
    <%= f.action :submit, :as => :input %>
  <% end %>
<% end %>

頭の中のHTML出力

<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/rails.validations.js?body=1" type="text/javascript"></script>
<script src="/assets/rails.validations.formtastic.js?body=1" type="text/javascript"></script>
<script src="/assets/rails.validations.customValidators.js?body=1" type="text/javascript"></script>
<script src="/assets/rails.validations.actionView.js?body=1" type="text/javascript"></script>

client_side_validation.rb

require 'client_side_validations/simple_form' if defined?(::SimpleForm)
require 'client_side_validations/formtastic'  if defined?(::Formtastic)

 ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
   unless html_tag =~ /^<label/
     %{<div class="toto"><div class="field_with_errors">#{html_tag}</div><label for="#{instance.send(:tag_id)}" class="message" style="float:right;">#{instance.error_message.first}</label></div>}.html_safe
   else
     %{<div class="toto">#{html_tag}</div>}.html_safe
   end
 end

私はレールに慣れていないので、おそらくどこかでガフをしました。ご不明な点がございましたらお知らせください。読んでくれてありがとう。

4

1 に答える 1

0

すべてがうまく見えます。個々のフィールドの 1 つで検証オプションをスローするとどうなりますか? その後、何かが発火しますか?

また、コンソールにエラーはありますか?client_side_validations で、永続的なメッセージがコンソール (特に Chrome) でオンになっていることを確認して、フォームの送信後に永続的なメッセージが残るようにする必要があることを発見しました。

于 2012-11-18T22:01:00.410 に答える