ненавязчивые рельсы javascript 3.1 несколько форм, одна страница - PullRequest
1 голос
/ 03 января 2012

Я без ума от нескольких форм на одной странице .

каждый работает нормально, когда есть одна уникальная форма , и вы можете идентифицировать уникальный идентификатор или уникальный класс этой формы или столбца ... и т. Д.

Но моя большая проблема возвращается, когда у меня есть несколько форм на одной странице . Я хочу сделать частичный create_index при создании нового комментария, в create.js.erb У меня есть:

$("<%= escape_javascript(render 'create_index') %>").hide().prependTo(".comments_column").fadeIn(1500);

Проблема заключается в том, что если много столбцов над формами с классом .comments_column , то комментарий выводится во всех столбцах с одинаковым классом.

Пример в jquery:

http://jsfiddle.net/minitech/aC92Q/8/

Для рельсов 3.1 этот пример не работает. Если я добавлю этот javascript в create.js.erb . В первый раз не показывать созданный комментарий.

Если я поставлю только в create.js.erb:

$("<%= escape_javascript(render 'create_index') %>").hide().prependTo(".comments_column").fadeIn(1500);

визуализировал частичное в каждом столбце, который содержит класс .comments_column .

Мой вопрос: как сказать рельсам 3 форму или кнопку, по которой я нажимаю, для рендеринга частичного только в этом столбце?

1 Ответ

0 голосов
/ 04 января 2012

Проблема исправлена!Для каждого мира, в котором есть эта проблема:

Каждый вызов AJAX UJS для rails предоставляет шесть пользовательских событий, которые можно прикрепить к:

ajax:before – right before ajax call
ajax:loading – before ajax call, but after XmlHttpRequest object is created)
ajax:success – successful ajax call
ajax:failure – failed ajax call
ajax:complete – completion of ajax call (after ajax:success and ajax:failure)
ajax:after – after ajax call is sent (note: not after it returns)

В моем случае я добавлю событиеслушатель события ajax: success на кнопке «Мой запрос»:

$('.comment_box form').bind('ajax:success', function() {  

   $("<%= escape_javascript(render(:partial => 'create_index'))%>").hide().prependTo($(this).parents(".comments_column").eq(0)).fadeIn(1500); 
}); 

Очень важно, чтобы пользовательские события или другая сторона не работали нормально.

...