分享 Rails 3.2 的 Ajax 向导

Rei · 2012年04月21日 · 最后由 xiao__liang 回复于 2016年05月13日 · 10421 次阅读

前不久入手了《Web 开发敏捷之道》的中文第 4 版,翻看了 Ajax 部分,发现竟然还是使用 .rjs 模板。.rjs 模板在 3.1 版以后已经被移除。另外我又去看了官方的 Rails guide,发现也没有讲述 Ajax 的章节。
也就是说一个新手入门,很可能搞不清楚 Rails 对 Ajax 的支持是如何处理的。所以我想在这写写 Rails 3.2 的 Ajax 向导,让不了解 Ajax 的新手了解 Rails 3.2 的 Ajax 处理,或者了解 Ajax 但不了解 Rails 的人知道 Rails 对其提供了什么支持。

http://chloerei.com/2012/04/21/rails-3-2-ajax-guide/

补充:要写一个向导真是不容易,特别是很难整理出一个足够短、能看懂、同时又能跑起来的例子。这个角度看《Web 开发敏捷之道》还是挺不错的,除了 rjs 部分过时了。所以看完我的向导之后还是不知道怎么写 Ajax 的朋友,不妨用 3.0.5 跟着《Web 开发敏捷之道》第 4 版中文的例子走一遍,之后再去了解为什么 rjs 模板被去掉了。

@Rei ,看完了,说的真清楚,对不熟悉 ajax 的同学应该有很大的帮助,感谢

cool,谢谢分享。like 了~ 另外如果和我一样不太喜欢魔法的话,http://www.alfajango.com/blog/rails-3-remote-links-and-forms/ 和 这个博客里面的http://www.alfajango.com/blog/rails-3-remote-links-and-forms-data-type-with-jquery/#example 都是不错的阅读资料。

非常感谢!

谢谢分享~

关键还是那个 js.erb 的问题。

太棒了!对于 Rails 的 ajax 一直很困惑,看完楼主的介绍,豁然开朗!多谢分享!

#6 楼 @Rei 怎么你给的链接不能进去了吗?

The page you were looking for doesn't exist.

@Rei 换了头像我都不认识你了

#9 楼 @huacnlee 不换头像不舒服斯基

前一阵还问过这个问题。

服务短方式的 *.erb 支持 coffee 吗?

@Rei 文章很简洁,提一个小瑕疵,客户端的 ajax 在 Rails 3.2 里面通常是绑定 ajax:event 来做的,而不需要绑定 form 的 submit 或者 link 的 click 事件,这样可以少去很多代码:

$('new_reply_form').on('ajax:success', function(data){
  $("#xxx").html(data)
})

#13 楼 @reducm 我试了一下 coffee.erb,不能正确处理,后来就把文中 coffee 部分内容去掉了。

#14 楼 @quakewang 因为假设的例子是 :remote => true 这个 Rails 的 helper 都不用,所以用了 submit 事件发起 ajax 请求。也许例子二和一混淆了,我再补充一个例子二的 form。

@Rei 网站貌似无法访问了

写的特别好,一下就明白了,原来版本差异会这么大,一开始我看的还是 rails 2 的书,WEB 开发之旅。

#15 楼 @Rei 最近有需要再 coffee 后面再加个可以处理异步的 javascript 引擎,刚看了一下 Sprockets的库,发现里面其实可以支持在 erb 里嵌 coffee 的

Note: Sprockets processes multiple engine extensions in order from right to left, so you can use multiple engines with a single asset. For example, to have a CoffeeScript asset that is first preprocessed with ERB, use the extension .js.coffee.erb.

#18 楼 @reducm 又试了一下,发现可以,之前不知道搞错了什么。

我在《Web 开发敏捷之道》的英文第 4 版。刚刚接触 Ajax 那部分内容,看的不是很明白,并且运行还有问题,结果还不刷新,真是郁闷!现在正在努力寻找问题所在。到时,搞不定,希望@Rei 能帮一把。啊哈哈

我想说真的是找不到该页面...有个问题,rails 3,有生成树的 gem 吗,怎么用?谢啦

#22 楼 @Rei 这个连接又失效了

连接失效了 @Rei

连接失效了

#26 楼 @Rei 非常感谢!!!!我之前要死要活地看完昨天你发的英文 guide,然后终于看到中文,真的非常感谢!!!!

@Rei 楼上链接都失效了,能麻烦再发一下么

29 楼 已删除
diguage 点击一下按钮,发送两次 Ajax 请求。求解释? 提及了此话题。 04月03日 10:56
需要 登录 后方可回复, 如果你还没有账号请 注册新账号