実現したいこと
ECサイトの構築を現在行っており、購入履歴画面を作成しております。
下記ordersテーブルのようにAさん(user_id=1)は一度の買い物で2つの商品を買うケースも想定しております。
1度に2つ以上の商品を購入する場合、viewには2つまとめて表示させたい(Amazonなどでよく見られるケース)です。
###困っていること
addressesテーブルからログイン中ユーザーのレコードを抽出し、each文で回し、さらにもう一度eachメソッドを使って表示させようとも
考えましたが、だめでした。
ordersテーブルのuser_idを使用しても1つずつしか取り出せませんでした。
###DB
####ordersテーブル
|id|product_id|user_id|address_id|quantity|
|:--|:--:|--:|
|1|3|1|5|2
|2|4|1|5|3
|3|8|2|6|1
###コード
(show.html.erb) <div class="history"> <div calss="cart_area" style="width: 70%; margin-left: 5rem;"> <% @addresses_id.each do |order| %> <% address_id.each do |order| %> <% product = Product.find_by(id: order.product_id) %> <div class="card mb-3 hover" style="max-width: 840px; margin-bottom:3rem;"> <div class="row no-gutters"> <div class="col-md-4"> <% images= Image.find_by(product_id: order.product_id) %> <%= image_tag "#{images.name1}", alt: "#{Product.find_by(id: order.product_id).name}", class:"card-img" %> </div> <div class="col-md-8"> <div class="card-body"> <h5 class="card-title"><%= product.name %><%= l order.created_at, format: :for_result %></h5> <p class="card-text"> <p class="text-muted" style="font-size: 2rem;"><%= product.price %><span style="font-size: 1.5rem"> 円/個</span></p> <% if product.category == "running_shoes" %> <p class="text-muted">サイズ:<%= cart_item.size%></p> <% end %> <p class="text-muted"><%= order.quantity%>個</p> <p style="margin-top:2rem;">小計:<%= product.price * order.quantity %> 円</p> </p> </div> </div> </div> </div> <% end %> <% end %> </div>
users_controlller.rb def show @user = User.find(params[:id]) addresses = Address.where(user_id: current_user) @addresses_id = addresses.ids end
###補足情報(FW/ツールのバージョンなど)
ruby 2.6.6
rails '~> 5.2.4', '>= 5.2.4.3'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/16 13:02
2020/09/16 13:08
2020/09/16 13:11
2020/09/16 13:33