2011-09-27 4 views
1

저는 현재 ClientSideValidations gem을 사용 중이며 ajax를 사용하여 부분 렌더링을하고 위에서 언급 한 gem으로 렌더링 된 부분 내에서 주소의 유효성을 검사하는 동안 멈추었습니다. 모델에 지정된 잘못된 조합을 입력 할 때 아무 것도 발생하지 않습니다.ajax 렌더링 부분에서 ClientSideValidations gem 사용하기

주소 양식을 직접 탐색하고 유효성 검사를 시도하면 모든 것이 정상적으로 작동합니다.

부분적으로 유효성 검사를 수행하는 방법에 대한 힌트 나 생각이 있으십니까?

감사합니다.

EDIT : JS 콘솔에서 오류가 발생하지 않습니다. 예를 들어 너무 짧은 우편 번호 (5 자리 숫자가있는 모델에서 지정)를 입력하면 아무 일도 일어나지 않습니다. Btw 나는 전망을 위해 햄을 사용한다.

그래서 내보기에 코드 :

= 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 

해당 당신이 레일에 의해 자동으로 다음 보면이보기를 생성하는 것이 수정 주소, 유효성 검사 잘 작동합니다.

레일 내가 오랫동안이 문제에 대한 작업과이 문제를 해결하는 방법에 전혀 단서가되지 않았다 주소를

=render 'partialXY' 

을 편집 할 뷰를 생성합니다. 레일즈 렌더링을 렌더링 할 때 유효성 검사를 사용한 이후로 아약스와 관련이 있다고 확신한다.

고맙습니다. Phil

+0

무엇이 작동하지 않습니까? 로그 또는 JS 콘솔에 오류가 있습니까? 코드를 보여줄 수 있습니까? –

+0

@Jordan이 코드를 추가했습니다! 뭔가 빠졌을 때 알려줘! Phil – user966041

답변

2

좋아요. 양식에 ID를 부여 했음에도 불구하고 ID는 최종 html 코드에서 다른 ID로 바뀌 었습니다. 그래서 방금

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

을 내 .js.erb 파일에 추가했습니다.

+0

아, 잘 잡으세요. 'form_for'에서'

' 태그의 모든 속성은': html' 옵션, 즉 form_for @address, : html => {: id => 'address_form'}, : remote => true do에 전달되어야합니다 ... '. 이것은 자주 나를 또한 위로 이동시킨다. 다행히도 그것을 다듬을 수있었습니다! –