1

私は現在 ClientSideValidations gem を使用しており、ajax を使用してパーシャルをレンダリングし、上記の gem でパーシャルをレンダリングした内部のアドレスを検証しようとしてスタックしました。モデルで指定された間違った組み合わせを入力しても何も起こりません。

address-form を直接参照して検証を試みると、指定どおりにすべてが正常に機能します。

パーシャル内で検証を機能させる方法に関するヒントや考えはありますか?

ありがとう!

編集: 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 によって生成されたビューによって自動的に、検証がうまく機能します。

アドレスを編集するためのレール生成ビュー

=render 'partialXY'

私はこの問題に長い間取り組んできましたが、これを修正する方法についてまったく手がかりがありません。Railsで生成された部分をレンダリングするときに検証を使用すると問題なく動作するため、ajaxと関係があると確信しています。

どうもありがとう!フィル

4

1 に答える 1

2

わかりました私はそれを修正しました。フォームに ID を指定したにもかかわらず、ID は最終的な HTML コードでは別のものでした。だから私はちょうど追加しました

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

私の.js.erbファイルに!

于 2011-09-27T16:37:12.590 に答える