gpt4 book ai didi

ruby-on-rails - 添加购物车项目 Ruby on Rails

转载 作者:行者123 更新时间:2023-12-04 06:42:16 25 4
gpt4 key购买 nike

我正在开发一个非常基本的购物车,我遇到的问题是,如果我将多个相同产品添加到我的购物车中,我不会看到数量增加,而只会看到该商品的多个版本。

例如我看到:

1 x 绿灯 = 15 英镑
1 x 绿灯 = 15 英镑

而不是看到:

2 x 绿灯 = 30 英镑

我怎样才能让我的购物车检查购物车中的多个版本,然后将它们添加在一起?

目前我有:

应用 Controller

  def current_cart
if session[:cart_id]
@current_cart ||= Cart.find(session[:cart_id])
end
if session[:cart_id].nil?
@current_cart = Cart.create!
session[:cart_id] = @current_cart.id
end
@current_cart
end

推车 Controller
   def show
@cart = current_cart
end

推车型号
 has_many :items

def total_price
items.to_a.sum(&:full_price)
end

购物车 View
 <table id="line_items">
<tr>
<th>Product</th>
<th>Qty</th>
<th class="price">Unit Price</th>
<th class="price">Full Price</th>
</tr>

<% for item in @cart.items %>
<tr class="<%= cycle :odd, :even %>">
<td><%=h item.product.name %></td>
<td class="qty"><%= item.quantity %></td>
<td class="price"><%= gbp(item.unit_price) %></td>
<td class="price"><%= gbp(item.full_price) %></td>
</tr>
<% end %>
<tr>

<td class="total price" colspan="4">
Total: <%= gbp(@cart.total_price) %>
</td>
</tr>
</table>

更多信息

产品#索引
  <%= link_to "Add to Cart", line_items_path(:product_id => product), :method => :post %>

人们可以提供任何建议将不胜感激。谢谢!

新设置 - 导致错误 Uninitialised Constant CartController
路由文件
 Checkout::Application.routes.draw do

ActiveAdmin.routes(self)

devise_for :admin_users, ActiveAdmin::Devise.config

post '/add_to_cart/:product_id' => 'cart#add_to_cart', :as => 'add_to_cart'

resources :carts
resources :products
resources :items

root :to => 'products#index'

end

推车 Controller
 class CartsController < ApplicationController

def show
@cart = current_cart
end

def add_to_cart
current_cart.add_item(params[:product_id])
redirect_to carts_path(current_cart.id)
end

end

推车模型
class Cart < ActiveRecord::Base
has_many :items

def add_item(product_id)
item = items.where('product_id = ?', product_id).first
if item
# increase the quantity of product in cart
item.quantity + 1
save
else
# product does not exist in cart
product = Product.find(product_id)
items << product
end
save
end

def total_price
items.to_a.sum(&:full_price)
end
end

产品#索引
<table class="jobs">
<thead>
<tr>
<th scope="col" id="name">Product Code</th>
<th scope="col" id="company">Name</th>
<th scope="col" id="company">Price</th>
<th scope="col" id="company">Action</th>
</tr>
</thead>

<tbody>
<% @product.each do |product| %>
<tr>
<td><%= product.product_code %></td>
<td><%= product.name %></td>
<td><%= gbp(product.price) %></td>
<td><%= button_to "Add to Cart", add_to_cart_path(:product_id => product), :method => :post %></td>
</tr>
<% end %>
</tbody>
</table>

最佳答案

在您的购物车模型中,创建一个名为

def add_item(product_id)
item = items.where('product_id = ?', product_id).first
if item
# increase the quantity of product in cart
item.quantity + 1
save
else
# product does not exist in cart
cart.items << Item.new(product_id: product_id, quantity: 1)
end
save
end

在routes.rb中,
post '/add_to_cart/:product_id' => 'cart#add_to_cart', :as => 'add_to_cart'

将您的添加到购物车路由更改为在购物车 Controller 中调用 add_to_cart 方法。
def add_to_cart
current_cart.add_item(params[:product_id])
# redirect to shopping cart or whereever
end

这应该让你知道你想要完成什么。

关于ruby-on-rails - 添加购物车项目 Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com