gpt4 book ai didi

ruby-on-rails - Rails AJAX 请求返回 5 次而不是一次

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:03 25 4
gpt4 key购买 nike

我正在尝试使用 link_to :remote 选项执行一个简单的 AJAX 请求并动态显示响应。问题是我得到 5 个响应而不是一个。为什么会发生这种情况?

page.html.erb:

<%= link_to item.title, item_path(item, :format => :js), :remote => true %>

显示.js.erb:

$("<%= escape_javascript render(:file => 'items/show.html.erb') %>").insertAfter('#sortable');
$('#show_item').slideDown();

items_controller.rb:

def show
@item = Item.find(params[:id])
respond_to do |format|
format.html
format.js
end
end

更新:我正在使用 jQuery。 Gemset 包括 Devise、paperclip 和 simple_form。我在使用 :confirm with link_to 时也遇到了类似的问题。问题是无论您按什么键,此确认对话框都会显示 5 次。

在生成的 html 中只有一个带有 'sortable' id 的项目:

<ul id="sortable"> 
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><a href="/items/10.js" data-remote="true">Another item</a></li>
<li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><a href="/items/9.js" data-remote="true">test</a></li>
</ul>

最佳答案

您遇到了不同链接的问题,对吧?

您的链接处理程序已被注册多次(您可以使用 firefox 中的 firebug 或 chrome 中的开发人员工具轻松检查,只需单击链接并查看发送了多少请求,或 console.log 处理程序)

如果您动态注册远程链接(例如,在异步页面片段加载之后),那么最简单的解决方法是将您的链接标记为已注册(例如,通过添加一个“已注册”类)而不是注册,就会发生这种情况又是那些,像这样

# Link registration
$('a.my_link:not(.registered)').click(function(e) {
#your code here
}).addClass('registered');

如果您自己没有用 jQuery 编写任何点击事件处理程序,请检查是否有库为您编写了这些处理程序。寻找类似的东西:

$(document).ajaxComplete(function() {
$('a[data-remote="true"]').click(function() {
#some code here...
});
});

关于ruby-on-rails - Rails AJAX 请求返回 5 次而不是一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5363801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com