実現したいこと:
上記のER図で、menuテーブルとcartテーブルが1対多の関係で構成されており、menu一覧画面から
カートに入れるをクリックすると、cartテーブルにデータが入るように組み立てました。
ユーザーがcartテーブルに入れたデータを、cartコントローラーのshowアクションで、cartカラムのmenu_idを使用してmenuテーブルに入っているデータを一覧としてcartのshowページで表示したいと思っています。
現状のコード
ruby
1class Menus::ApplicationController < ApplicationController 2end
ruby
1 2class Menus::CartsController < Menus::ApplicationController 3 4 def create 5 order = current_user.prepare_order 6 menu = Menu.find(params[:menu_id]) 7 @cart = order.carts.new(cart_params) 8 @cart[:menu_id] = menu.id 9 if @cart.save 10 redirect_to cart_path(current_user) 11 else 12 render :new 13 end 14 end 15 16 17 def destroy 18 end 19 20 private 21 def cart_params 22 params.require(:cart).permit(:quantity).merge(user_id: current_user.id); 23 end 24 25end
ruby
1class CartsController < ApplicationController 2 def new 3 @cart = Cart.new 4 end 5 6 def show 7 @cart = Cart.where(user_id: current_user.id) 8 @menu = Cart.all.includes(:menu) 9 end 10 end
ruby
1class Cart < ApplicationRecord 2 belongs_to :order 3 has_many :menus 4end
ruby
1class Menu < ApplicationRecord 2 belongs_to :cart, dependent: :destroy 3 belongs_to :category 4end
エラー内容
Ruby
1Cartコントローラーshowアクションのページ 2 3<%= render 'layouts/header' %> 4 5<div class="cart-container"> 6 <div class="cart-history"> 7 <h3>注文履歴</h3> 8 </div> 9 10 <div class="cart-selection"> 11 <section> 12 <ul> 13 <li><a href="#">カート</a></li> 14 <li><a href="#">注文済み</a></li> 15 <li><a href="#">キャンセルされた注文</a></li> 16 </ul> 17 </section> 18 </div> 19 20<% @cart.each do |cart|%> 21 <form action="#" method="post"> 22 <div class="cart-content"> 23 <div class="cart-details-top"> 24 <ul> 25 <li>注文日:<br><span></span></li> 26 <li>配達予測時間:<br><span></span></li> 27 <li>お届け先:<br><span>様</span></li> 28 <li>金額<br><span>¥</span></li> 29 </ul> 30 </div> 31 32 <div class="cart-details-under"> 33 <div class="in-cart-name"> 34 <p>商品名:<span><%= @menu.name %></span></p> 35 <p>個数:<span><%= cart.quantity %>個</span></p> 36 <img src="" alt="image" width="180px" height="150px"> 37 </div> 38 <div class="cart-important"> 39 <p>アレルギー物質表示:</p> 40 <p>商品説明</p> 41 <p>食材</p> 42 </div> 43 </div> 44 </div> 45</div> 46<% end %> 47 48<div class="price-container"> 49 <h3>合計金額: ¥</h3> 50 <button type="submit" name="buy">注文する</button> 51 </form> 52</div> 53 54<div class="image-box"> 55 <div class="main-image"> 56 <%= link_to do %><%= image_tag asset_path("main-menu.png"), alt:"main-menu", width:"30px" %><% end %> 57 </div> 58 59 <div class="single-box"> 60 <%= link_to do %><%= image_tag asset_path("single-menu.png"), alt:"main-menu", width:"30px" %><% end %> 61 </div> 62 63 <div class="drink-box"> 64 <%= link_to do %><%= image_tag asset_path("drink-menu.png"), alt:"main-menu", width:"30px" %><% end %> 65 </div> 66 67 <div class="reservation-box"> 68 <%= link_to do %><%= image_tag asset_path("reservation-menu.png"), alt:"main-menu", width:"40px", height:"20px" %><% end %> 69 </div> 70</div> 71 72<%= render 'layouts/footer' %>
商品名を出力すると、名前が出力されずに、"Cart"という文字が出力されます。
予備情報
分かる方知識を貸してください。
すみませんが、宜しくお願いいたします。
回答2件
あなたの回答
tips
プレビュー