我目前正在使用ClientSideValidations gem并在使用ajax渲染部分时陷入困境,并尝试使用上面提到的gem验证部分内部的地址。输入模型中指定的错误组合时没有任何反应。
如果直接浏览地址表并尝试验证,一切正常,就像指定一样。
关于如何使验证在部分内部工作的任何提示或想法?
谢谢!
编辑:JS控制台没有错误,例如输入太短的邮政编码(在5位数的模型中指定)没有任何反应。顺便说一句,我使用haml进行观看。
所以我视图中的代码:
= link_to "Shipping", addresses_path, :remote => true
对应的控制器addresses_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
就像我说在验证像zipcode等渲染的部分输入时没有任何反应。有趣的是,如果你看下面的内容,通过rails生成的视图自动编辑地址,验证工作正常。
rails生成视图以编辑地址
=render 'partialXY'
我已经在这个问题上工作了很长时间,并且完全不知道如何解决这个问题。我确定它与ajax有关,因为在渲染rails生成部分工作时使用验证就好了。
非常感谢!菲尔
答案 0 :(得分:2)
好的我修好了。尽管给了表单ID,但最终的html代码中的ID是不同的。所以我刚加了一个
$('form.form_real_id').validate();
到我的.js.erb文件!