Ruby on Rails3: как мне вызвать javascript до того, как событие ajax будет запущено с remote => true? - PullRequest
0 голосов
/ 01 февраля 2011
        <%= link_to( {:controller => 'board', 
                          :action => 'take_turn', 
                          :id => @board.id,
                          :x => col, 
                          :y => row} , :remote => true, :onClick => "return links_disabled;") do %>
          <div class="ttt_square"> 
            &nbsp;
          </div>
        <% end %>

в rails2, были: before и: полные параметры, но я не нашел документации для этого в rails3

Ответы [ 4 ]

1 голос
/ 02 февраля 2011

Насколько я понимаю, это одно из последствий использования Rails 3 UJS (ненавязчивый javascript).Rails 3 позволяет вам держать JavaScript подальше, например, от тега ссылки.Вместо тега ссылки, определяющего, что должно быть сделано через javascript, вы заставляете javascript наблюдать тег ссылки.

Это достигается путем привязки функции к определенному событию объекта, например.привязка ajax: before события тега ссылки к функции.

В этой записи блога автор объясняет, как это сделать, в его случае с JQuery.

1 голос
/ 02 февраля 2011

Насколько я понимаю, в Rails 3 вы связываете события обратного вызова с элементом на стороне клиента, и они запускаются rails.js в соответствующее время.

$('#myform').bind('ajax:success', function(){
    alert('I succeeded');
})
0 голосов
/ 02 февраля 2011

Моя версия (jquery-rails 0.2.6) поддерживает ajax: до, загрузка, успех, завершение, сбой и после.Параметры для функций успеха / неудач не совпадают, что приводило меня в замешательство в прошлом.Но у меня работает следующее:

$('a').bind('ajax:loading', function() {
  alert('here');
});

Если ваш элемент ссылки был создан после начальной загрузки страницы, вам может потребоваться выполнить привязку с использованием 'live':

$('a').live('ajax:loading', function() { alert('...'); });

Я бы такжедважды проверьте, что ваш обработчик onclick не мешает.

0 голосов
/ 01 февраля 2011

Если я хорошо помню, в Rails3 больше нет поддержки.

Вы можете использовать встроенную функцию jQuery:

ajaxStart()

http://api.jquery.com/ajaxStart/

Подробности здесь: http://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/

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