前提・実現したいこと
現在railsの学習の一環としてユーザーが部屋の登録、予約を行える機能を実装している最中で最後に実装したいこととして合計金額を予約完了ボタン押下後にindexに表示したいと考えているのですがうまくいかず困っています。
今まで自分が行なった作業としてはreserverモデルに合計金額を出力するための計算式をアクションとして記述してあるところまでは最低限やってあります。
そこからcontrollerで呼び出しviewに表示するのだということはイメージが浮かばず困っています。
どなたかアドバイス、助言等よろしくお願いします。
表示したい合計金額の箇所
該当のソースコード
rails
1class Reserver < ApplicationRecord 2 belongs_to :user 3 belongs_to :greenhouse 4 5 validates :start, presence: true 6 validates :end, presence: true 7 validates :number, presence: true 8 9 def total 10 (@reserver.end - @reserver.start).to_i 11 (@greenhouse.price * @reserver.number * @stay) 12 end 13end
rails
1class ReserversController < ApplicationController 2 def index 3 @reservers = Reserver.all 4 @total_price = @reservers 5 end 6 7 def new 8 @reserver = Reserver.new 9 @reserver.greenhouse = 10 @greenhouse = Greenhouse.find(params[:format]) 11 end 12 13 def create 14 @reserver = Reserver.new(params.require(:reserver).permit(:start, :end, :number, :total, :user_id, :greenhouse_id)) 15 if @reserver.save 16 flash[:notice] = "新規予約をしました" 17 redirect_to action: :index 18 else 19 @greenhouse = Reserver.find(params[:reserver][:greenhouse_id]) 20 render :new 21 end 22 end 23 24 def show 25 @reserver = Reserver.find(params[:id]) 26 end 27 28 def edit 29 @reserver = Reserver.find(params[:id]) 30 end 31 32 def update 33 @reserver = Reserver.find(params[:id]) 34 if @reserver.update(params.require(:reserver).permit(:start, :end, :number, :total, :user_id, :greenhouse_id)) 35 flash[:notice] = "投稿を更新しました" 36 redirect_to :reservers 37 else 38 render "edit" 39 end 40 end 41 42 def destroy 43 @reserver = Reserver.find(params[:id]) 44 @reserver.destroy 45 flash[:notice] = "投稿を削除しました" 46 redirect_to :reservers 47 end 48end
rails
1 <h3>予約一覧</h3> 2 3 <table> 4 <thead> 5 <tr> 6 <th>ルーム名</th> 7 <th>イメージ</th> 8 <th>開始日</th> 9 <th>終了日</th> 10 <th>人数</th> 11 <th>合計金額</th> 12 <th>参照</th> 13 <th>編集</th> 14 <th>削除</th> 15 </tr> 16 </thead> 17 18 <tbody> 19 <% @reservers.each do |reserver| %> 20 <tr> 21 <td><%= reserver.greenhouse.name %></td> 22 <td class = "room_sample"><%= image_tag reserver.greenhouse.image %></td> 23 <td><%= reserver.start %></td> 24 <td><%= reserver.end %></td> 25 <td><%= reserver.number %></td> 26 <td><%= reserver.total %>円</td> 27 <td> 28 <%= link_to "参照", reserver %> 29 </td> 30 <td> 31 <%= link_to "編集", [:edit, reserver] %> 32 </td> 33 <td> 34 <%= link_to "削除", reserver, method: :delete, data: { confirm: "本当に削除しますか?" } %> 35 </td> 36 </tr> 37 <% end %> 38 </tbody> 39 </table>
試したこと
モデルに合計金額を出すための式を記述
controllerにその式を使用するためdef indexに記述するのはわかりますがどれに対して記述をしていくのかがわからなくなり止まりました。
補足情報(FW/ツールのバージョンなど)
aws cloud9
rails6.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。