Ruby on rails Rails Ajax助手是如何工作的
在Rails 3中,假设我有以下代码: 控制器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助手在收到它时调用它。这是正确的,还是这里还有其他魔法?编辑 简短回答:
...
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部分很感兴趣,你可以从我的帖子中看到。我把答案编辑得更清楚一点。那更合你的意吗?