javascript - 在 Rails 3 中将 .js.erb 用于 Ajax(jquery .js 与 .js.erb)

标签 javascript jquery ajax ruby-on-rails-3

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

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

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

  • 在 Rails 3 中推荐的方法是什么?
  • Rails 的方法是什么?
  • 最佳做法是什么?
  • 其中一种备选方案优于另一种备选方案的特定情况 其他?
  • 对大型项目有何建议?

谢谢

最佳答案

在 Rails 3 之前,添加 :remote => true 会在 form 标签内生成一堆内联 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 文件,您会注意到几个远程处理程序定义。第一个处理远程表单提交的情况,第二个处理远程链接和输入字段,第三个处理应该表现得像表单的非远程链接。

来自 looking deeper into the code我发现这个文件实际上执行了一个 jQuery ajax 调用:

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

因此 使用 :remote => true 和常规 jQuery ajax 调用之间没有区别rails 就像一个包装器一样调用相同的方法。

更多信息 here , herehere .

关于javascript - 在 Rails 3 中将 .js.erb 用于 Ajax(jquery .js 与 .js.erb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10805245/

相关文章:

javascript - req.body 返回未定义?

javascript - window.onbeforeunload 与表单

javascript - angular2 服务基类继承 - 为什么 'this' 为空?

javascript - NodeJS - 异步函数内的代码乱序执行

php - 使用 jQuery Mobile 动态创建虚拟页面

javascript - 使用关键字搜索 JSON 结果集并仅返回匹配项

javascript - 如何解决 jQuery 冲突?

jquery - 在 js 砌体之前加载 <img> html 标签

javascript - 如何访问 JSON 编码关联数组中的单个项目

javascript - 如何使用脚本标签进行 jQuery .load()