9

我有两种方法可以在 Rails 3 应用程序中实现 ajax。

1- 在文件 viewaction.js 或 viewaction.js.coffee 中使用 jquery 绑定提交事件,并管理返回的 json 以修改 DOM 中的内容。

2- 在 Rails 中使用 remote=>true 标记并编写一个名为 viewaction.js.erb 的文件以在 DOM 中进行修改并使用控制器中加载的类变量。

  • Rails 3 中推荐的方法是什么?
  • Rails 的方法是什么?
  • 最佳做法是什么?
  • 当其中一种选择比另一种更好时的具体情况?
  • 对大项目有什么建议?

谢谢

4

1 回答 1

9

在 Rails 3 之前,添加:remote => true会在表单标签内生成一堆内联 JavaScript,但在 Rails 3 UJS 中,唯一的变化是添加了 HTML 5 自定义属性data-remote=true。例如:

<%= form_for(@post, :remote => true) do |f| %>  

会产生

<form accept-charset="UTF-8" action="/posts" class="new_post" data-remote="true" id="new_post" method="post">  

目前,这是 rails3 方法。生成它的 js 函数位于 rails.js 文件下。如果您打开rails.js文件,您会注意到几个远程处理程序定义。第一个处理远程表单提交的情况,第二个处理远程链接和输入字段,第三个处理应该表现得像表单的非远程链接。

通过深入研究代码,我发现这个文件实际上执行了一个 jQuery ajax 调用:

ajax: function(options) {
      return $.ajax(options);
    },

所以使用和常规的 jQuery ajax 调用没有区别, rails 就像一个包装器来调用相同的方法。:remote => true

更多信息在这里这里这里

于 2012-05-29T19:45:16.593 回答