railsを使いフォームに記入したカロリーを計算し表示するアプリを作成しています。
環境
Cloud9
ruby -v 2.6.3
rails -v 6.0.3
ルーティング
get "/calorie", to: "calories#index" post "/calorie", to: "calories#create"
モデル
class Calorie < ApplicationRecord validates :calorie, presence: true validates :date, presence: true end
コントローラー
class CaloriesController < ApplicationController def new end def index @calories = Calorie.group(:date).sum(:calorie) end def create @calorie = Calorie.create(calorie_params) if @calorie.save redirect_to action: "index" else flash.now[:alert] = "値が正しくありません" render "index" end end private def calorie_params params.permit(:date, :calorie) end end
フォームで不正な値を記入した際にrender "index"をするとindexアクションの下記の処理が行われないため
def index @calories = Calorie.group(:date).sum(:calorie) end
集計したカロリーが表示されません。
index
1 2<div class="input_form"> 3 <p>摂取カロリーを記録してください</p> 4 5 <%= form_with(url: calorie_path, local: true) do |f| %> 6 <%= f.label :calorie, "calorie" %> 7 <%= f.number_field :calorie %> 8 9 <%= f.label :date, "日付" %> 10 <%= f.date_field :date %> 11 12 <%= f.submit "送信" %> 13 <% end %> 14 15 16 <div class="output_calorie"> 17 <h1>摂取カロリー</h1> 18 <% if @calories %> 19 <% @calories.each do | date, calorie| %> 20 <%= date.strftime("%m/%d") %> 21 <%= calorie %>kcal 22 <% end %> 23 <% end %> 24 </p> 25 </div> 26 27 28</div>
色々試しましたが、解決策が思い浮かばないのでアドバイスよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/13 07:35