Rails 3: как сделать Ajax-вызов? - PullRequest
14 голосов
/ 12 марта 2011

Я хотел бы иметь ссылку (есть ли лучший вариант?) На моей странице, которая будет делать запрос Ajax при нажатии. (Я хочу обновить поле в моей базе данных при нажатии на ссылку.)

Какой самый простой способ добиться этого?

Не могли бы вы отослать меня к некоторым учебникам?

Ответы [ 2 ]

24 голосов
/ 12 марта 2011

Действительно просто. По вашему мнению, есть ссылка / кнопка, как это. Важным битом является : удаленный => true

<%= link_to 'Update Thingy', update_thingy_path, :confirm => 'You sure you wanna update?', :remote => true %>

или

<%= button_to('Update Thingy', {:action => 'update_thingy', :thingyid => 314}, :method => :get, :remote => true) %>

Очевидно, вам нужно получить update_thingy_path, чтобы разрешить какое-либо действие как обычно. Разница в том, что при рендеринге вы будете рендерить какой-то * .js.erb вместо * .html.erb. В этом update_thingy.js.erb вы просто помещаете в клиент любой javascript, который хотите запустить. Вы можете уведомить пользователя о том, что обновление произошло, например (в jQuery):

$('#notice').html("Thingy was update.")

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

render :js => "alert('Blah')"
3 голосов
/ 12 марта 2011

Вы действительно собираетесь использовать две технологии для достижения этой цели: javascript на стороне клиента и rails на стороне сервера.

Общая идея заключается в том, что вы хотите:

(1) добавьте ваши веб-методы на стороне сервера с помощью rails, а затем
(2) использовать что-то вроде jQuery, чтобы ваши js-вызовы на стороне клиента обращались к серверу для запуска веб-методов.

Две записи, которые я нашел по поиску: rails3 ajax

http://www.stjhimy.com/posts/7-creating-a-100-ajax-crud-using-rails-3-and-unobtrusive-javascript

http://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/

Справочник по API для использования метода jQuery ajax post ():
http://api.jquery.com/jQuery.post/

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