编辑:
除了以下有用的评论之外,Steve Schwartz 的两篇优秀文章清楚地解释了一切:
- http://www.alfajango.com/blog/rails-3-remote-links-and-forms/
- http://www.alfajango.com/blog/rails-3-remote-links-and-forms-data-type-with-jquery/
Rails 3.2.2 / jquery-rails 2.0.1 (使用 jquery 1.7.1)
我有发送 AJAX 请求以将其他文件上传字段添加到表单的链接。 与页面相关的所有内容都可以正常工作- 从服务器检索新的表单字段 HTML 片段并将其附加到表单内的 div 中。
然而,
服务器收到两个 GET 请求。一是AJAX请求;另一个似乎是“正常”的锚元素 GET。我预计 Rails UJS 会停止“正常”GET。
我应该自己禁用正常的链接操作吗?有人可以解释我误解了什么,以及我应该做什么[以防止第二个请求]?
我见过这个问题:Rails 3 UJS - controller被link_to :remote 调用两次。因此,我尝试更改资产管道编译config.assets.debug = false
,但没有效果。此外,这不是双 AJAX GET 请求,所以我认为这是一个不同的问题。
谢谢你的帮助!
服务器日志片段:
Started GET "/files/new?asset_number=2" for 127.0.0.1 at 2012-03-23 15:23:27 +0100
Started GET "/files/new" for 127.0.0.1 at 2012-03-23 15:23:27 +0100
浏览器 HTML:
<a href="/files/new" data-remote="true" id="add_another_file" position="after" update="files">Add another file</a>
看法:
<%= link_to 'Add another file', new_file_path, :remote => true,
:update => 'files',
:position => 'after',
:id => 'add_another_file' %>
控制器的咖啡脚本:
$( ->
$('a#add_another_file').click( ->
url = '/files/new?asset_number=' + $('#files input').length
$.get(url, ((data) -> $('#files').append(data)), 'html')))