Rails 3:如何进行Ajax调用?
我想在我的页面上有一个链接(有更好的选项吗?),点击后会发出Ajax请求。 (我想在点击链接时更新数据库中的字段。)
实现这一目标的最简单方法是什么?
你能给我推荐一些教程吗?
真的很简单。 在您的视图中,有一个像这样的链接/按钮。 重要的是: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')"
您真的将使用两种技术来实现这一目标:客户端的javascript和服务器端的rails。
一般的想法是你想:
(1)使用rails在服务器端添加Web方法,然后
(2)使用类似jQuery的东西让你的客户端js调用到服务器来触发web方法。
我通过Google搜索找到的两篇文章: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/
使用jQuery的ajax post()方法的API参考:
http://api.jquery.com/jQuery.post/