如何在Rails 3.1中使用Ajax?

4
我们知道,Rails 3.1 使用 CoffeeScript 和 JQuery。
我之前处理 ajax 请求的方式是将请求响应到模板中,模板名为 some_action.js.erb。
现在我们有了 CoffeeScript,我希望我的模板可以使用 CoffeeScript 语法。那我该怎么办?
只需要更改模板文件的后缀名吗?
在 assets/javascript 目录下,some_file.js.coffee 可以正常工作。
但是如果我处理的 ajax 请求及其模板在 views 文件夹下,仅仅将模板名称从 some_action.js.erb 更改为 some_action.js.coffee.erb 或 some_action.js.coffee 是行不通的,Rails 会将其视为普通文件,并不会将其从 CoffeeScript 语法编译成普通的 JavaScript。
非常抱歉我的英语能力,希望这次我的问题能够清楚地表达我的目的。
1个回答

2
假设您已经升级到Rails 3.1,利用新的语法就像您建议的那样,只需要将文件转换为CoffeeScript即可。现在,您不能仅仅将文件命名为*.js.coffee并期望进行转换,但是Railscasts的Ryan Bates建议您手动更改文件以学习语法,这是一个很好的方法。事实上,他发布了一个视频教程,展示了他的操作过程:http://railscasts.com/episodes/267-coffeescript-basics然后,Rails会为您处理从js.coffee到.js的编译工作。

我已经看到了强制类型转换,也许我没有表达清楚,我会再次编辑我的问题,请您再看一下。 - castiel
从您的编辑中我了解到,您将some_action.js.coffee文件放在了views文件夹中,因此无法正确编译。然而,如果您将其放在assets目录中,则可以正常工作。那么,我可以建议您将文件保留在assets目录中。在那里,您可以创建任何组织层次结构。如果您仍然更喜欢将.js文件保留在views中(据我所知,这是非惯用语),我建议您研究一下Rails 3.1资产管道路径。 - Zachary Allaun
谢谢,还有更多关于Rails3.1需要我去探索。 - castiel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接