JQuery AJAX вызова в Rails? - PullRequest
       3

JQuery AJAX вызова в Rails?

2 голосов
/ 07 сентября 2010

Я хочу выполнить простую вещь. Когда пользователь щелкает ссылку, jQuery должен сгенерировать Ajax-запрос, который отправляет идентификатор элемента ссылки методу в контроллере. По сути, я хочу красивое модальное диалоговое окно, когда пользователь нажимает на ссылку удаления. Это окно должно содержать различную информацию об удаленных элементах. Например. <%= link_to "Delete", item, :id => "delete" %>

Я могу выбрать эту ссылку с помощью jquery и даже открыть всплывающее диалоговое окно, когда пользователь щелкает по ней. Через application.js, но мне действительно нужно, чтобы jQuery вызывал мой метод при нажатии на ссылку, а в моем методе я отвечал через format.js. В файле js я размещаю код для отображения модального диалога с необходимыми параметрами. Все эти действия асинхронны с помощью Ajax of Конечно. Я не могу сгенерировать ajax-запрос к методу в контроллере. Уже не знаю, как обращаться с методом jQuery.ajax, особенно как заставить jQuery передавать параметр url в метод rails. Я наблюдал за Railscast и изучил пример с .post, но мне не нужно отправлять какую-либо форму. Любой совет приветствуется. Спасибо

Ответы [ 2 ]

6 голосов
/ 07 сентября 2010

Rails ожидает сообщение со скрытым параметром.

$('#delete').click(function(e){
  e.preventDefault();
  $.post($(this).attr('href'), { _method: 'delete' });
});
1 голос
/ 07 сентября 2010

В Rails 3 есть ненавязчивый способ сделать это с помощью плагина jQuery:

http://github.com/rails/jquery-ujs

После того, как вы загрузили это в свой макет (с jQuery 1.4.1 или новее), вы можете довольно легко выполнять такие взаимодействия.

<%= link_to 'delete', item, :remote => true, :method => :delete, 
       :confirm => 'Are you sure?' %>

В Rails 3 все, что это делает, это добавляет некоторые атрибуты HTML к вашей ссылке. Они ловятся живыми обработчиками в плагине jQuery. Это поведение легко использовать в приложении на Rails 2, однако:

<%= link_to 'delete', item, :'data-remote' => true, :'data-method' => :delete, 
       :'data-confirm' => 'Are you sure?' %>

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

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

Если вам нужно, чтобы начальный ответ был модальным, а не предупреждением, вы можете сделать первую ссылку немного проще:

<%= link_to 'delete', modal_confirm_item_url(item), :'data-remote' => true %>

Вы можете связать его с каким-либо ранее существующим действием члена. Или, поскольку вы, возможно, захотите использовать ответы .js от этих действий для обслуживания других запросов ajax, может иметь смысл создать новое действие для обработки этого поведения.

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