Ruby on rails Spree Commerce-绕过OrderController的重定向#填充

Ruby on rails Spree Commerce-绕过OrderController的重定向#填充,ruby-on-rails,ruby,redirect,spree,Ruby On Rails,Ruby,Redirect,Spree,除了填充订单外,这些“添加到购物车”按钮都重定向到购物车页面。这在大多数情况下都很好,但是有几个按钮我想简单地填充顺序,而不重定向浏览器。例如,您可以单击按钮,购物车中的数字将增加,但您将停留在同一页面上。这可能吗?我已经找到了(我认为)重定向发生的地方。也许有某种指示器我可以通过按钮触发旁路 来自订单\控制器\装饰器 def populate Spree::Order.transaction do current_order(true).lock! # force-create and

除了填充订单外,这些“添加到购物车”按钮都重定向到购物车页面。这在大多数情况下都很好,但是有几个按钮我想简单地填充顺序,而不重定向浏览器。例如,您可以单击按钮,购物车中的数字将增加,但您将停留在同一页面上。这可能吗?我已经找到了(我认为)重定向发生的地方。也许有某种指示器我可以通过按钮触发旁路

来自订单\控制器\装饰器

  def populate
Spree::Order.transaction do
  current_order(true).lock! # force-create and lock
  populator = Spree::OrderPopulator.new(current_order(true), current_currency)

  if populator.populate(params.slice(:products, :variants, :quantity, :product_test_types))
    current_order.ensure_updated_shipments

    respond_with(@order) do |format|
      Rails.logger.debug "** Successful populate"
      format.html { redirect_to cart_path }
    end
  else
    msg           = populator.errors.full_messages.join(" ")
    flash[:error] = msg
    Rails.logger.debug "** Unuccessful populate: [#{msg}]"
    redirect_to cart_path
  end
 end
end

您有两个选择:

  • 在我的spree 1-3-stable站点上所做的是,
    add to cart
    按钮正在调用一个ajax方法来填充订单,因此不需要重定向

  • 从您的方法中删除
    重定向到购物车路径
    ,并重定向回您来自的页面

编辑:咖啡中的AJAX示例

  data = $("#order_form").serialize();

  #add additional info if needed
  data= data + '&size=' + user_selected_size

  $.ajax
    type: 'POST'
    url:  $("#order_form").attr("action")
    data: data
    success: (result) ->
      #your success method for handeling what happens after the cart is populated

嘿,谢谢,伙计。你能详细介绍一下ajax方法吗?我只使用了JSON请求,所以我不确定该怎么做。@user2985714我用coffeescript中的ajax用法示例编辑了答案