Rails 3 UJS - контроллер вызывается дважды по link_to: remote - PullRequest
33 голосов
/ 20 ноября 2010

У меня странная проблема, когда JQuery создает два AJAX-запроса для метода link_to.Я разрабатываю приложение Rails 3 с JQuery для UJS.У меня есть ссылка переключения, которая переключается между «Follow» и «Unfollow»

Моя ссылка отображается следующим образом:

<span id="follow_link">
  <a href="/tfollow_artist?id=8103103" data-method="post" data-remote="true" id="follow_artist" rel="nofollow">Unfollow</a>
</span>

, и мой контроллер настроен так:

def tfollow_artist
  @artist = Artist.find(params[:id])
  if current_user.following?(@artist) 
    current_user.stop_following(@artist)
  else 
    current_user.follow(@artist)
  end
 end

, который в конечном итоге отображает js как:

 $('#follow_link').html('<%= escape_javascript(render :partial => "follow") %>');

, который по существу заменяет html-содержимое ' ... тем же URL-адресом только с другим текстом.Например, вышеприведенное теперь будет отображаться как:

<span id="follow_link">
  <a href="/tfollow_artist?id=8103103" data-method="post" data-remote="true" id="follow_artist" rel="nofollow">Follow</a>
</span>

Однако это как-то заставляет JQuery сделать два AJAX-запроса.

Может кто-нибудь увидеть, что здесь не так?

Я использую гем 'jquery-rails', который копирует последний файл jquery-ujs в мое приложение.Версия JQuery 1.4.3

Ответы [ 11 ]

0 голосов
/ 29 ноября 2011

JavaScript-файлы, которые вы хотите использовать как: по умолчанию (application.js всегда включен).

 config.action_view.javascript_expansions[:defaults] = %w(jquery rails)

Комментированная строка ясно говорит, что application.js всегда включен. В моем приложении я добавил приложение по умолчанию. Так что для ajax .submit это было создание двух записей в моем приложении.

...