【问题标题】:duplicate ajax calls when include jquery ujs in rails application在rails应用程序中包含jquery ujs时重复ajax调用
【发布时间】:2015-09-29 08:27:03
【问题描述】:

我正在使用 rails 开发一个基本的 depot 应用程序 我添加了一个按钮

<%= button_to 'Add to Cart', line_items_path(product_id: product) , remote: true %>

当我点击主页超链接然后再次点击按钮时,ajax被复制,如果我点击主页3次,按钮ajax调用3次等等

注意:当我从 application.js 中删除 jquery-ujs 时问题消失了

line_item 控制器

def create
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.add_product product
@line_item.save
respond_to do |format|
  if @line_item.save
    format.html { redirect_to store_url }
    format.js { @current_item = @line_item }
    format.json { render :show, status: :created, location: @line_item }
  else
    format.html { render :new }
    format.json { render json: @line_item.errors, status: :unprocessable_entity }
  end
end
end

主页操作

def index
@products = Product.order(:title)
@cart = current_cart
end

应用程序.js

// This is a manifest file that'll be compiled into application.js,
// listed below.
//
//= require jquery
//= require turbolinks
//= require jquery-ui
//= require jquery_ujs
//= require_tree .

ajax 响应应该呈现这个 js 文件 show.js.erb

$('#cart').html("<%=j render @cart %>");
//#START_HIGHLIGHT
$('#current_item').css({'background-color':'#88ff88'})
.animate({'background-color':'#114411'} , 1000);

使用 gem jquery rails 4.0.4

【问题讨论】:

  • 请在帖子中包含您的 jQuery 和 .js.erb 视图文件。
  • 我加了,谢谢通知
  • 我在@Mohamed 的帖子中没有看到您的 AJAX 视图文件。此外,通常情况下,您的 create 操作会导致页面重新加载,您将为 AJAX 操作使用单独的操作名称。
  • 在我添加属性 remote='true' 时添加了 ajax,响应是行 format.js 。它应该呈现 create.js 然后将其作为响应发送单击按钮“添加到购物车”发送重复 ajax 请求的问题

标签: jquery ruby-on-rails ajax ruby-on-rails-4


【解决方案1】:

我发现了问题。每次点击主页时,使用带有 javascript 链接标签的 turbolink 加载一个额外的 jquery 脚本,一个虚拟的解决方案是将 javascript 链接标签放在 head 本身内

【讨论】:

  • 这通常是重复 jquery 包含的问题。记得把你自己的答案标记为答案,所以问题被列为已解决:)
猜你喜欢
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 2012-01-16
  • 1970-01-01
相关资源
最近更新 更多