【发布时间】:2011-03-19 18:01:34
【问题描述】:
我正在尝试使用 link_to :remote 选项执行简单的 AJAX 请求并动态显示响应。问题是我得到 5 个响应而不是 1 个。为什么会发生这种情况?
page.html.erb:
<%= link_to item.title, item_path(item, :format => :js), :remote => true %>
show.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、回形针和 simple_form。将 :confirm 与 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>
【问题讨论】:
-
你说收到 5 条回复是什么意思?
-
你使用哪个 JS 框架?是 jQuery 吗?一个请求不可能得到 5 个响应,我猜也有 5 个请求,请检查一下。
-
这样的问题通常是事件冒泡的结果。确保在发出请求后单击您的链接停止冒泡。
-
您是否拥有多个 ID 为“可排序”的对象?
标签: ruby-on-rails ruby ajax