質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby on Rails 5

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

Ruby on Rails 6

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

Ruby on Rails

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

Q&A

解決済

1回答

718閲覧

合計金額を予約完了後にindexに表示したい

Engineer_traine

総合スコア17

Ruby on Rails 5

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

Ruby on Rails 6

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/07/20 06:28

前提・実現したいこと

現在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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

total の式が間違えてます。これテストしてないね

def total (@reserver.end - @reserver.start).to_i (@greenhouse.price * @reserver.number * @stay) end

def total greenhouse.price * number * (self.end - start).to_i end

end という予約語使ってるので self をつけなけりゃならないし、色々厄介だから day_start、day_end とかの方が良いですね

投稿2021/07/21 15:33

winterboum

総合スコア23416

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問