railsを使いフォームに記入した値を日別に集計し表示するカロリー計算アプリを作成中です。
環境
Cloud9
ruby -v 2.6.3
rails -v 6.0.3
マイグレーションファイル
mmigrate
1class CreateCalories < ActiveRecord::Migration[6.0] 2 def change 3 create_table :calories do |t| 4 t.float :calorie 5 t.date :date 6 7 t.timestamps 8 end 9 end 10end 11
ルーティング
routes.rb
1 get "/calorie", to: "calories#index" 2 post "/calorie", to: "calories#create"
controller
calories_controller
1class CaloriesController < ApplicationController 2 def index 3 @calorie = Calorie.new 4 @calories = Calorie.group(:date).sum(:calorie) 5 end 6 7 def create 8 @calorie = Calorie.new(calorie_params) 9 if @calorie.save 10 redirect_to action: "index" 11 else 12 flash[:danger] = "値が正しくありません" 13 render "index" 14 end 15 end 16 17 18 19 private 20 21 def calorie_params 22 params.permit(:date, :calorie) 23 end 24end
view
index.html.erb
1<div class="contents"> 2 <p>摂取カロリーを記録してください</p> 3 4 <%= form_with(url: calorie_path, local: true) do |f| %> 5 <%= f.label :calorie, "calorie" %> 6 <%= f.number_field :calorie %> 7 8 <%= f.label :date, "日付" %> 9 <%= f.date_field :date%> 10 11 <%= f.submit "送信" %> 12 <% end %> 13 14 15 16 <div class="output_calorie"> 17 <p> 18 <%= @calories %> 19 </p> 20 </div> 21</div> 22
フォームに入力された値を一括で表示する箇所を下記のようにそれぞれ個別で表示したいのですが、
このような変更を加えるとエラーが発生してしまいます。
<div class="output_calorie"> <p> <%= @calories.date %> <%= @calories.calorie %> </p> </div> </div>
エラー
undefined method `date' for {Sun, 09 Jan 2022=>800.0, Mon, 10 Jan 2022=>800.0}:Hash Did you mean? update
indexアクションでのインスタンス変数の定義が原因かと考え色々試しましたが、解決できないのでアドバイスをいただきたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。