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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

解決済

2回答

715閲覧

Ruby on Rails フォームで記入された値を個別に表示したい

Tako-shikaku6

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

0クリップ

投稿2022/01/09 12:58

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アクションでのインスタンス変数の定義が原因かと考え色々試しましたが、解決できないのでアドバイスをいただきたいです。

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

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

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

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

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

guest

回答2

0

@calories は個々では無いです。
個々にするには @calories.each do |calory|
にしてください

投稿2022/01/09 13:07

winterboum

総合スコア23567

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

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

0

自己解決

<% @calories.each do | date, calorie| %> <%= "日付" %> <%= date %> <%= "カロリー" %> <%= calorie %> <% end %>

each文の| |で要素を指定することで無事解決できました。

投稿2022/01/10 02:02

Tako-shikaku6

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問