我目前正在使用 ClientSideValidations gem 并在使用 ajax 渲染部分并尝试使用上面提到的 gem 验证渲染部分内部的地址时卡住了。输入模型中指定的错误组合时没有任何反应。
如果直接浏览地址表单并尝试验证,一切正常,就像指定的一样。
关于如何使验证在部分内部工作的任何提示或想法?
谢谢!
编辑:JS 控制台中没有错误,例如输入太短的邮政编码(在模型中指定为 5 位)时没有任何反应。顺便说一句,我使用 haml 作为视图。
所以我认为的代码:
= link_to "Shipping", addresses_path, :remote => true
对应的控制器地址_controller.rb
respond_to do |format|
...
format.js {render :layout => false}
...
end
对应的 index.js.erb
$("#ajax_content").html("<%= escape_javascript(render :partial =>
"partialXY") %>");
和相应的部分
= form_for @address, :validate => true, :id => "address_form", :remote => true do |f|
- if @address.errors.any?
#error_explanation
%h2
= pluralize(@address.errors.count, "error")
prohibited this user from being saved:
%ul
- @address.errors.full_messages.each do |msg|
%li
=msg
%ul
%li
= f.label :type
= f.select :address_type, [['Billing Address', 'billing'],['Shipping Address',
'shipping']], :class => "address_selection"
%li
= f.label :gender
= f.select :gender, [['Male', 'male'],['Female', 'female']], :class => "text_field"
%li
= f.label :last_name
= f.text_field :last_name, :id => "last_name", :class => "text_field"
%li
= f.label :first_name
= f.text_field :first_name, :class => "text_field"
%li
= f.label :company_name
= f.text_field :company_name, :class => "text_field"
%li
= f.label :street
= f.text_field :street, :class => "text_field"
%li
= f.label :number
= f.text_field :number, :class => "text_field"
%li
= f.label :zipcode
= f.text_field :zipcode, :class => "text_field"
%li
= f.label :place
= f.text_field :place, :class => "text_field"
%li
= f.label :phone_no
= f.text_field :phone_no, :class => "text_field"
%li
= f.label :country
= f.text_field :country, :class => "text_field"
%li
= f.label :email
= f.text_field :email, :class => "text_field"
%li
= f.submit
所以就像我说的那样,在验证渲染的部分输入(如邮政编码等)时没有任何反应。有趣的是,如果您查看以下内容,通过 rails 自动生成的用于编辑地址的视图,验证工作得很好。
rails 生成的视图来编辑地址
=render 'partialXY'
我已经在这个问题上工作了很长时间,并且完全不知道如何解决这个问题。我确信它与 ajax 有关,因为在渲染 rails 生成的部分工作时使用验证就可以了。
非常感谢!菲尔