Use 3-2-stable
on your Gemfile, and run bundle install
gem 'client_side_validations', :github => 'bcardarella/client_side_validations', :branch => '3-2-stable'
Question
I added client-side-validations
to my Gemfile
and ran bundle install
. Then ran rails g client_side_validations:install
It created config/initializers/client_side_validations.rb
(wheres my JS file? the asset pipeline?)
It's supposed to work out've the box but it didn't seem to.
I went to config/initializers/client_side_validations.rb
and uncommented the following lines from :
#ClientSideValidations Initializer
# Uncomment to disable uniqueness validator, possible security issue
# ClientSideValidations::Config.disabled_validators = [:uniqueness]
# Uncomment the following block if you want each input field to have the validation messages attached.
# 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
to:
#ClientSideValidations Initializer
# Uncomment to disable uniqueness validator, possible security issue
# ClientSideValidations::Config.disabled_validators = [:uniqueness]
# Uncomment the following block if you want each input field to have the validation messages attached.
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
I decided to run rails g client_side_validations:copy_assets
and then I required rails.validations (//= require rails.validations
) in my application.js
file (before //= require tree .
).
When I try to tab out of form fields no inline errors are displayed, when I submit a form no errors are displayed either.
I have the following code for my form and model:
class User < ActiveRecord::Base
has_secure_password
attr_accessible :email, :password, :password_confirmation
validates_presence_of :email
validates_presence_of :password, :on => :create
validates_length_of :password, :minimum => 6
validates_confirmation_of :password
validates_uniqueness_of :email
end
<h1>Sign Up</h1>
<%= form_for User.new, :validate => true do |f| %>
<p>
<%= f.label :email %>
<%= f.text_field :email %>
</p>
<p>
<%= f.label :password %>
<%= f.password_field :password %>
</p>
<p>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
</p>
<p>
<%= f.submit "Sign Up" %>
</p>
<% end %>
I'm hoping the problem is in my configuration or syntax and not with the gem.
Any insight would be fully appreciated.
Solution
Use 3-2-stable
on your Gemfile, and run bundle install
gem 'client_side_validations', :github => 'bcardarella/client_side_validations', :branch => '3-2-stable'
OTHER TIPS
I think your settings seem fine. You are missing "error_messages" class in your form. I did same validation in my project. My code is:
<%= f.error_messages :header_message => "oops! you missed something",
:message => "",
:header_tag => :h3, :class => "background-color:#d24d33; color:#ffffff" %>
Put above code with customization in your form.You need to specify where to display your error and how. This all is defined in above code. Please let me know if you need further help.