在ajax中使用ClientSideValidations gem渲染部分

时间:2011-09-27 00:38:07

标签: ajax partial client-side-validation

我目前正在使用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生成部分工作时使用验证就好了。

非常感谢!菲尔

1 个答案:

答案 0 :(得分:2)

好的我修好了。尽管给了表单ID,但最终的html代码中的ID是不同的。所以我刚加了一个

$('form.form_real_id').validate();

到我的.js.erb文件!