Использование самоцвета ClientSideValidations внутри ajax отрисовывается частично - PullRequest
1 голос
/ 27 сентября 2011

В настоящее время я использую гем ClientSideValidations и застрял при рендеринге партиала с использованием ajax и пытаюсь проверить адреса внутри этого рендеринга партиалом с помощью гема, упомянутого выше.Ничего не происходит при вводе неправильной комбинации, указанной в модели.

Если непосредственно перейти к форме адреса и попробовать проверки, все работает нормально, как указано.

Любые подсказки или мысли по поводукак заставить проверки работать внутри партиала?

Спасибо!

EDIT : в консоли JS нет ошибок, просто ничего не происходит, например, при вводе слишком короткого почтового индекса(указано в модели с 5 цифрами).Кстати, я использую haml для представлений.

Так что код в моем представлении:

 = link_to "Shipping", addresses_path, :remote => true

соответствующий контроллер address_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'

Я давно работаю над этой проблемой и совершенно не знаю, как это исправить.Я уверен, что это как-то связано с ajax, так как использование валидации при рендеринге сгенерированных рельсов прекрасно работает.

Большое спасибо!Фил

1 Ответ

2 голосов
/ 27 сентября 2011

Хорошо, я исправил это.Оказалось, что несмотря на то, что в форме был указан идентификатор, он был другим в окончательном HTML-коде.Поэтому я просто добавил

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

в мой файл .js.erb!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...