Rails 3: Как сделать вызов Ajax?
Я хотел бы иметь ссылку (есть ли лучший вариант?) на моей странице, которая будет делать запрос Ajax при нажатии. (Я хотел бы обновить поле в моей базе данных, когда будет нажата ссылка.)
Каков самый простой способ достичь этого?
Не могли бы вы сослаться на некоторые уроки?
Ответы
Ответ 1
Действительно просто. На ваш взгляд, у вас есть ссылка/кнопка. Важный бит: remote = > 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')"
Ответ 2
Вы действительно собираетесь использовать две технологии для этого: javascript на стороне клиента и рельсы на стороне сервера.
Общая идея заключается в том, что вы хотите:
(1) добавьте свои веб-методы на стороне сервера с помощью рельсов, а затем -
(2) используйте что-то вроде jQuery, чтобы ваши вызовы js на стороне клиента на сервер запускали веб-методы.
Две записи, которые я нашел по googling для: 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/