4

我最近开始学习基于 RoR3 beta/RC 的 Ruby on Rails。我之前一直在使用其他框架(如 Django)开发应用程序,其中的 JavaScript 完全是我自己编写的。

在使用 RoR 开发应用程序时,我对两种可能的 JavaScript 实现方式感到困惑:“纯”一种(编写 JavaScript 并将其放入<script>标签中)和编写 RJS 文件。

应该使用哪种方法以及何时使用?如果是 RJS,我该如何实现特定的操作,例如onChange

4

2 回答 2

6

在 Rails 中,您应该将这两种方法用于不同的任务。我也是。当我想执行 ajax 请求时,我使用 RJS,因为它简化了请求,并允许在 .rjs 文件中用更少的代码编写更强大、更灵活的响应。例如,可以在其中使用局部变量并访问 ruby​​ 变量。当我想让页面更加动态时,我会使用普通的 javascript,包括javascript_include_tag.

UPD。 这种方法同样适用于 rails 3。可以将它与 JQuery 和 HAML 一起使用。Rails 3 中的 UJS 甚至简化了它。如果您更喜欢Jquery而不是 Prototype 和正确的文件命名(如create.js.haml. 例如,可以通过这种方法在 AJAX 请求中使用服务器端验证。

于 2010-09-05T16:39:19.640 回答
4

在 rails 3 中,正确的做法是纯 JS。RJS 过于严格,您必须使用 Prototype 或以某种方式破解才能将其与 jQuery 一起使用。Rails 3 还提倡不显眼的 javascript。在 AJAX 请求上,您应该返回嵌入 ERB 的纯 Javascript,而不是使用 RJS。

不幸的是,由于此更改需要对使用 RJS 的旧项目进行大量返工,因此有些人会放弃它。

RJS 实际上在 rails 3 中已经贬值了,你需要一个插件才能使用它,所以如果你现在开始并且你很幸运已经开始使用 rails 3,那就去 rails 3 吧。

这是新的 UJS 方式的一个很好的例子: http ://railscasts.com/episodes/205-unobtrusive-javascript

祝你好运

于 2011-01-12T10:46:40.340 回答