Rails Ajax Helpers如何工作

时间:2012-08-31 12:10:59

标签: ruby-on-rails ajax

在Rails 3中,假设我有以下代码:

控制器

...
format.js # create.js.erb
...

create.js.erb

$('#element').html("new content");

查看表单

...
button_to 'Create', element, remote: true

我想知道create.js.erb文件中的JS是如何被调用的。 我的猜测是它返回JS代码,并且一些Rails助手在收到它时会调用它。这是正确的,还是还有其他任何魔法?

1 个答案:

答案 0 :(得分:1)

修改

简短回答:基本上,您的假设是正确的,它将返回将执行的JS代码。

稍微长一点的答案:但背后有一些魔力。 单击该按钮时,它将向创建URL发出JSON请求,但要求格式为'js'。

然后控制器知道预期的格式是'js',并且在运行create操作后,将呈现该格式的模板 - create.js.erb

Rails知道它应该执行此自定义JSON请求,因为:remote => true选项。它为链接元素添加了data-remote=true属性。

然后,rails.jslink)中指定的处理程序将附加到具有此数据属性的每个元素,其中包含其余部分。

以下原始答案

Rails使用一种名为 Unobtrusive Javascript 的技术将您在.js文件上指定的处理程序附加到各自的事件中。

您可以在this(更具体地说,第3部分)和this文章中详细了解它。

,您可以选择最有趣的路线并查看rails.js文件,看看所有魔法是如何运作的:)