Rails-Ajax,如何更新购物车

时间:2019-01-13 15:20:05

标签: ruby-on-rails ajax

在我的订单商品中,我可以删除一行,它会随着ajax淡出

destroy.js.erb

$(".delete_btn").bind('ajax:success', function(){
    $(this).closest('tr').fadeOut();
     //I tried the code below
     //$("#item_count").html("<%= current_cart.items_count %>")
})

删除后,我希望Ajax更新:

  • 购物车商品(位于导航栏中)

    <span id="items_count"><%= current_cart.items_count %></span>

  • 总价格(在order_items / index中)

    <td colspan='4' align="right"><%= number_to_currency_euro current_cart.sub_total %></td>

编辑:

我的问题是:我应该在ajax中编写什么代码,以使用Ajax更新总价格和商品编号?

current_cart被定义为应用程序控制器

before_action :current_cart

  def current_cart
    @current_cart ||= ShoppingCart.new(token: cart_token)
  end

private

 def cart_token
   return @cart_token unless @cart_token.nil?
   session[:cart_token] ||= SecureRandom.hex(8)
   @cart_token = session[:cart_token]
 end

order_items_controller.rb

  def destroy
    current_cart.remove_item(id: params[:id])
    respond_to do |format|
      format.js
      format.html { redirect_to clients_cart_path, notice: "Correctement supprimé du panier" }
    end   
  end

1 个答案:

答案 0 :(得分:1)

$(".delete_btn").bind('ajax:success', function(){
    $(this).closest('tr').fadeOut();
    $("#items_count").html("<%= @current_cart.items_count %>");
    $("#total_amount").html("<%= number_to_currency_euro @current_cart.sub_total %>");
});

那是我最终编写的代码,并且运行良好。我重命名了我的#id,发现那里有一个错字...