Я слежу за рельсами, отлитыми 263 на стороне клиента. У меня есть код на месте, хотя он не подтверждает ошибки для меня. Ошибки отображаются только после отправки формы.Проверка на стороне клиента не загружается
application.html.erb:
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= javascript_include_tag :defaults, "rails.validations" %>
<%= csrf_meta_tags %>
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
form.html.erb:
<%= form_for @user, :validate => true do |f| %>
<% if @user.errors.any? %>
<div class="error_messages">
<h2>Form is invalid</h2>
<ul>
<% @user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :email %><br/>
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %><br/>
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :username %><br/>
<%= f.text_field :username %>
<div class="field">
<%= f.label :zip_code %><br/>
<%= f.text_field :zip_code %>
</div>
</div>
application.js:
//= require jquery
//= require jquery.ui.all
//= require jquery_ujs
//= require jquery.magnific-popup.js
//= require jquery.purr
//= require rails.validations
//= require best_in_place
//= require_tree .
Когда вы убираете поле с установленными валидностями, необходимо запустить код JavaScript client_side_validations в файле rails.validation.js. Если вы отлаживаете JS в своем браузере, это код внутри 'executeValidates = function (context)' firing? – cschroed
@cschroed Когда я просматриваю исходный код страницы, я фактически получаю «Сбой при загрузке ресурса: сервер ответил статусом 404 (не найден)». Исходя из ссылки http: // localhost: 3000/javascripts/defaults.js. Может быть, это и есть причина? –
Да, это, кажется, начало проблемы. Я предложил альтернативный вариант. – cschroed