0

Acts_as_shopping_cart gemには、2つのモデル(Shopping Cartおよび)が必要Shopping Cart Itemです。

アイテムに対して次のようにアクセスできる属性:

<td><%= shopping_cart_item.item.name %></td>
<td><%= shopping_cart_item.item.price %></td>
<td><%= shopping_cart_item.quantity %></td>

ただし、ユーザーが数量を変更できるようにしたいのですが、たとえばドロップダウンメニューから(つまり、コレクションからタグを選択して)ください。

しかし、私はそれにどのようにアプローチするのかよくわかりません。

また、アイテムのサイズや色など、他の属性をアイテムに追加したいと思います。

店主さんにサイズや色などを指定してもらいたいです。

の範囲内でそれを行うにはどうすればよいacts_as_shopping_cartですか?

ありがとう。

編集1:

または、誰かが私が基本的なチェックアウトを行うことを可能にする別のショッピングカートソリューションについてより良い提案を持っているなら、私もそれをいただければ幸いです。

編集2

views/shopping_cart/show.html.erb

<h1>Shopping Cart</h1>

<table class="table table-striped">
  <thead>
        <tr>
            <td>Item</td>
            <td>Price</td>
            <td>Quantity</td>
        </tr>
    </thead>
    <tbody>
        <tr>  
      <%= render :partial => 'shopping_cart_item', :collection => @shopping_cart.shopping_cart_items %>
    </tr>
  </tbody>  
</table>

<div>
    <p>SubTotal: <%= number_to_currency @shopping_cart.subtotal %></p>      
</div>
<div>
    <p>Taxes: <%= number_to_currency @shopping_cart.taxes %></p>
</div>
<div>
    <p>Total: <%= number_to_currency @shopping_cart.total %></p>
</div>

_shopping_cart_item.html.erb部分的には次のようになります。

<td><%= shopping_cart_item.item.name %></td>
<td><%= shopping_cart_item.item.price %></td>
<td><%= shopping_cart_item.quantity %></td>

非常に基本的なショッピングカートですが、数量やサイズなどが記載された実際のショッピングカートに移動する方法がわかりません。

4

2 に答える 2

1

量:

acts_as_shopping cart実際、私はそれが正確に何をするのかわかりません。しかし、とにかく、Railsを使用したアジャイルWeb開発(4ed)、117ページの「標準」の実現を見てください。これらのカートをアプリケーションに盗むことも、アプリケーション全体を盗むこともできます。この本はあなたに関するものだと思います。:)

製品のプロパティ:

問題を最初から明確にし、所有者の要求による潜在的な合併症を明らかにすることは非常に重要です。したがって、そこにリンクするのに問題はありません。

すべての「属性」は、注意深く認識および分類する必要があります。たとえば、色はどこでも単純です(アメリカ、アフリカ、ヨーロッパでは赤は赤です)が、サイズはそうではありません。何のサイズ?布のサイズは、地域の寸法、文化、布の種類などによって異なり、1つの値(「M」、「S」、または「46」)であり、製品の原産地によって異なります... 3Dのサイズは3つの数値です(インチの場合もあります)。 、cm、m)および販売地域によって異なります。

したがって、OOPの考え方により、すべての製品の「属性」をスタンドアロンのActiveRecordモデル(has_many product_items)に書き込む必要がありますが、それらをできるだけ速く検索する方法を正確に知る必要があります。

最後に、あなたはそのようなことを成し遂げたと思います。

size = Size.new(:origin => :us, :value => "m")
size.origin
#=> "us"
size.value
#=> "m"
size.with_analogs # model knows how to translate sizes between each other
#=> [<self>, <#Size @origin: "europe", @value: 46>, <#Size. @origin: "europe", @value: 45.5>, <#Size @origin: "australia", @value: ...>]

したがって、商品アイテムの特定のサイズが(実際にはbelongs_to)1つしかないという事実にもかかわらず、次のような類似商品の類似サイズを見つけることができます。

product = Product.find(1)
Product.where(:name => "%#{product.name}", :size => {:id => [product.size.with_analogs.map(&:id)]})

または、それらを変換する方法を学習するSTIをデータベースに保存することもできますが、少し複雑です。

class Size
class EuropeSize < Size     # STI
class UsSize < Size         # STI
class AustraliaSize < Size  # STI

...
于 2012-12-22T13:35:54.013 に答える
0

数量を追加/編集する方法は次のとおりです

  1. ショップページで、新しいショッピングカートを作成し、そのIDをセッションに保存します
  2. ショッピングカートへのアイテムの追加は、ヘッダーのdivを更新するために新しいカートアイテムのhtmlを返すAjax呼び出しを使用して処理されます
  3. チェックアウトページには、各アイテムの数量編集テキストボックスがあります。
  4. 数量を変更すると、新しい数量とproduct_idの両方を使用してajax呼び出しを行います(cart_item_idを使用して行うことができます)
于 2014-04-29T04:49:44.910 に答える