Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails Ajax助手是如何工作的_Ruby On Rails_Ajax - Fatal编程技术网

Ruby on rails Rails Ajax助手是如何工作的

Ruby on rails Rails Ajax助手是如何工作的,ruby-on-rails,ajax,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助手在收到它时调用它。这是正确的,还是这里还有其他魔法?编辑 简短回答:

在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助手在收到它时调用它。这是正确的,还是这里还有其他魔法?

编辑

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

稍长一点的回答:不过这背后有一些魔力。 单击该按钮时,它将向创建url发出JSON请求,但要求使用“js”格式

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

Rails知道它应该执行这个定制JSON请求,因为有
:remote=>true
选项。它向link元素添加一个
data remote=true
属性

然后,在
rails.js
()中指定的处理程序被附加到具有此数据属性的每个元素,该属性负责处理其余的元素

下面的原始答案

Rails使用一种称为不引人注目的Javascript的技术将您在.js文件上指定的处理程序附加到它们各自的事件中

您可以在(更具体地说是第3部分)和文章中阅读更多关于它的信息


,您可以选择最有趣的方式,查看
rails.js
文件,看看所有的魔法是如何工作的:)

这取决于客户端发送请求的方式。控制器根据HTML/JS/XML请求相应地呈现视图。我对JS部分很感兴趣,你可以从我的帖子中看到。我把答案编辑得更清楚一点。那更合你的意吗?