質問するログイン新規登録

Q&A

0回答

3172閲覧

RailsでECサイトを作成しています。カート一覧ページの中で同一商品があった場合の記述方法について

mnhy613

総合スコア21

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/04/04 05:08

0

0

カート一覧ページを作成しています

現在のビューページが写真のようになっています

イメージ説明

商品名が同じ場合、数量を合計して表示させたいのですが記載方法がわかりません

考えたのはモデルに足し算のメソッドを書いてviewに呼び出すのかと思ったのですが、その方法を調べてもわかりませんでした。

カート一覧のviewは

<table class="table"> <thead> <tr> <th>商品名</th> <th>単価(税込)</th> <th>数量</th> <th>小計</th> </tr> </thead> <tbody> <% @carts.each do |cart| %> <tr> <td><%= cart.item.name %></td> <td><%= cart.item.price %></td> <%= form_for(cart, url:cart_path(cart),method: :patch) do |f| %> <% sub_total = cart.count.to_i + cart.count.to_i %>
<td><%= sub_total %></td> <td> <%= f.select :count,(1..50) %> <%= f.submit "変更する"%> <% end %> </td> <td>¥<% @sum_price %></td> <td><%= link_to "削除する", cart_path(cart.id), method: :delete %></td> </tr> <% end %> </tbody>
</table>

カートコントローラには

def index
@carts = Cart.all
@cart = Cart.where(user_id: current_user.id)
@sum_price = Cart.sum_price
end

def create
cart = Cart.new(cart_params)
cart.user_id = current_user.id
cart.save
redirect_to carts_path
end

カートモデルには

def self.sum_price

array = [] #空の配列を用意し、 Item.all.each do |item| array << item.price end array.sum #ここで合計を求める

end

このように書いています。

rails初心者のため、訳のわからないことを書いてるかもしれませんがご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問