1

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

非常感谢!菲尔

4

1 回答 1

2

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

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

到我的 .js.erb 文件!

于 2011-09-27T16:37:12.590 回答