2016-11-08 8 views
-1

ユーザーが[カートに追加]ボタンをクリックすると、カート内の商品数を表示するためにnavbar divの数字を1増やす必要があります。Rails 5、Ajax、jQuery - ボタンをクリックしたときの数字を増やす

だから、私のボタンがremote: true

を設定しており、ナビゲーションバーには、ID とのdivを持っています。

$('#count').html(function(i, val) { return val*1+1 }); 

しかし、私はページをリロードした場合、その値が消える:私は数を増やすために使用

機能。 「チェックアウト」のような行動が起こるまで、その価値をどのように維持することができますか?

これにはより良い方法がありますか?

+1

ur_action.js.erbを作成するさて、あなたは、DBやクッキーのように、どこかでその値を保存する必要があります。 – Vucko

答えて

0

が作成、更新されます対応js.erbファイル を返します更新れる解雇されますモデルメソッドまたはヘルパーメソッドを使用して、アクティブなカートアイテムの数を見つける。正確な値も提供されます。例えば

class User < ApplicationRecord 
has_many :cart_items 
def active_cart_items 
    return self.cart_items.group_by(&:product_id).count #.where(status:active) (optional) 
end 
end 

は、カートのカウンターでその設定項目にur_controller

$('#count').html("<%[email protected]_cart_items%>") 
+0

私はあなたのコメントを答えとして追加します.UはRubyの部分をJSに入力する構文を示していたからです。私はdidint知っていた(はい、今それは単純に見える...)。しかし、私はこのメソッドを使って新しいcart_itemを追加しているので、まだこれで作業する必要があります: 'def add_product(product) current_item = cart_items.find_by(product_id:product.id)if current_item current_item.quantity + = 1 他 current_item = cart_items.build(PRODUCT_ID:product.id)は、ユーザが複数の同じcart_itemsを追加する場合、彼らは、ああ、いくつかの新鮮な空気を –

+0

を終了します。答えは簡単です:@ cart.cart_items.map {| i | i [:quantity]} .sum –

+1

掛けし、コンソールが私の一日行わレールされていないので、 current_item end' –

0

カートアイテムをデータベースに保存する必要があります。ボタンをクリックするだけで、 アヤックス(remote: true)は、データベース&でカート カウントがナビゲーションバーのカウント

関連する問題