我花了很长时间试图让client_side_validations gem工作,但是没有文本显示,并且在表单之后没有注入脚本标记.我已经尝试了Rails生成的标准表单和Devise表单.我已确保包含rails.validations.js文件并取消注释随gem提供的初始化程序中的块.
这是我的代码:
client_side_validations.rb
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
unless html_tag =~ /^<label/
%{<div class="field_with_errors">#{html_tag}<label for="#{instance.send(:tag_id)}" class="message">#{instance.error_message.first}</label></div>}.html_safe
else
%{<div class="field_with_errors">#{html_tag}</div>}.html_safe
end
end
JS包括
<%= javascript_include_tag "/javascript/rails.validations.js" %>
的Gemfile
gem 'client_side_validations'
标准导轨形式
<%= form_for(@report, :validate => true) do |f| %>
<%= f.hidden_field :url, :value => "http://#{request.host}:#{request.port}#{request.fullpath}" %>
<%= f.label :elements %>
<%= f.text_field :elements %>
<%= f.label :comments %>
<%= f.text_area :comments %>
<%= f.submit "Send", :class => 'btn' %>
设计形式
<%= form_for(resource, :validate => true, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<%= f.label "First name" %>
<%= f.text_field :first_name %>
<%= f.label "Last name" %>
<%= f.text_field :last_name %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
<%= f.label :privacy_policy, :class => 'checkbox' do %>
<%= f.check_box :privacy_policy %>I agree to the <%= link_to "Privacy policy", privacy_path %><% end %>
<%= f.submit "Sign up", :class => 'btn' %>
<% end %>
我真的不知道接下来我能做些什么.我需要参考不同版本的宝石吗?如何检查宝石是否真正起作用?
我目前正在使用Rails 3.2.13
我在javascript控制台中没有收到任何错误.
如果您想查看相关文件,请告诉我们.
任何指针将非常感谢!
最佳答案 请在您的Gemfile中尝试以下操作:
gem 'client_side_validations`, :github => 'bcardarella/client_side_validations', :branch => '3-2-stable'