我正在尝试解决“Rails 3 in Action”这本书,其中作者使用以下代码添加了一个使用ajax生成新文件字段的链接。我很难理解它是如何工作的,什么是等效的javascript(或jQuery),它在功能上等同于更好地理解它:
<%= link_to "Add another file", new_file_path,
:remote => true,
:update => "files",
:position => "after"
%>
非常感谢
答案 0 :(得分:0)
嗯,我不确定我们是否能比这本书更好地解释它。你遇到了哪个部分?
您的代码将变为'a'链接,其href将是new_file_path的url(可能是文件控制器中的新方法)。您可以通过键入app.new_file_path
在rails控制台中调用此方法来检查此路径'remote'参数将为'a'元素生成一个数据远程参数,其值为true,这意味着它将是一个ajax调用。当页面加载rails.js时会找到远程参数,因此将click事件绑定到ajax调用。
ajax调用返回时更新的位置将是页面上的'files'元素。
position参数表示 - 不直接更新files元素 - 但是将响应放在DOM之后的那个元素中。
如果这对尝试这些资源没有帮助:
答案 1 :(得分:0)
我对这个例子非常困惑,因为它不正确并且与Rails 3无关。相反,作者使用来自link_to_remote的有些奇怪的语法,Rails 3中不再支持它。
此助手将生成以下链接:
<a update="files" position="after" data-remote="true" href="/files/new">Add another file</a>
只是向/files/new
网址发出AJAX GET请求(因为jquery-ujs
会观察点击data-remote="true"
的链接并产生此类请求)。它不会向服务器发送任何其他参数(update
和position
)。后续的DOM操作完全取决于您在服务器上生成的响应。
因此,在Rails 3 update
和position
选项完全无用,如果你想与服务器通信(那些可能在客户端事件处理程序中使用,但它不是那本书所说的,据我所知)。