【发布时间】:2011-07-13 22:04:37
【问题描述】:
我想在我的页面上有一个链接(有更好的选择吗?),点击它会发出 Ajax 请求。 (我想在点击链接时更新我的数据库中的一个字段。)
实现这一目标的最简单方法是什么?
你能给我介绍一些教程吗?
【问题讨论】:
标签: ruby-on-rails ajax ruby-on-rails-3
我想在我的页面上有一个链接(有更好的选择吗?),点击它会发出 Ajax 请求。 (我想在点击链接时更新我的数据库中的一个字段。)
实现这一目标的最简单方法是什么?
你能给我介绍一些教程吗?
【问题讨论】:
标签: ruby-on-rails ajax ruby-on-rails-3
真的很简单。在您看来,有一个像这样的链接/按钮。重要的一点是 :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 方法。
我通过谷歌搜索找到了两篇文章: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/
【讨论】: