「Ruby初心者」 投稿したデータの一覧が表示できなくて困っております。
現在家計簿アプリを作成中です。
エラーは出てないのですが、入力した投稿の一覧が見れません。
saveできたときに「登録しました」という文字を出すようにしていますが、その文字は出てきます。
実際の画面です。
1枚目が入力ページ、
2枚目が一覧ページです。
こんな感じで「登録しました」と出てくるためセーブされているはずが、一覧に表示されません。
関係ありそうな箇所のコードがこちらです。
<% require 'active_support/core_ext/numeric/conversions' %>
<h2>収入科目の新規データ登録</h2>
<p>登録年月を設定してください</p>
<%= form_tag({controller: :income_values, action: :new}, {method: :post}) do %>
<input type="month" name="year_month">
<input type="submit">
<% end %>
<h2>収入科目 データ一覧 </h2>
<% if @income_value.present? %>
<table>
<tr>
<th>登録年月</th>
<th>名称</th>
<th>値</th>
<th>備考</th>
<th>操作</th>
</tr>
<% @income_values.each do |income_value| %>
<tr>
<td><%= income_value.year_month.strftime('%Y年%m月') %></td>
<td><%= @incomes.find(income_value.income_id).name %></td>
<td><%= income_value.value.to_s(:delimited) %> 円</td>
<td><%= income_value.description %></td>
<td><%= link_to "編集", [:edit, income_value] %> | <%= link_to "削除", income_value, method: :delete, data: { confirm: "本当に削除しますか?"} %></td>
</tr>
<% end %>
</table>
<% else %>
<p>登録されているデータがありません。</p>
<% end %>
class IncomeValuesController < ApplicationController
def index
@incomes = Income.order(created_at: :asc)
@income_values = IncomeValue.order("year_month asc")
end
def show
@income_value = IncomeValue.find(params[:id])
end
def new
year_month_day = params[:year_month] + "-01"
@year_month = year_month_day.to_date
@incomes = Income.order(created_at: :asc)
@form = Form::IncomeForm.new
end
def edit
@income_value = IncomeValue.find(params[:id])
@income = Income.find(@income_value.income_id)
end
def create
@form = Form::IncomeForm.new(income_form_params)
if @form.save
redirect_to :income_values, notice: "登録しました"
else
redirect_to :income_values, notice: "登録に失敗しました"
end
end
def income_form_params
params
.require(:form_income_form)
.permit(income_values_attributes: Form::IncomeValue::REGISTRABLE_ATTRIBUTES)
end
def update
@income_value = IncomeValue.find(params[:id])
@income_value.assign_attributes(params[:income_value])
if @income_value.save
redirect_to :income_values, notice: "情報を更新しました"
else
インターンへ向けてのポートフォリオ作成中なのですが
ここで詰まってしまい、2日ほど試行錯誤してお手上げ状態です、、、
プログラミング初心者で質問も初めてなので至らない点が多いと思います、すみません
もしよろしければ、ご教授の程よろしくお願いします。
※補足です
ご回答いただいたように
<% if @income_value.present? %>
を
<% if @income_values.present? %>
としましたところ、
このようなエラーが出てしまいました。
SQLの方に問題があるということでしょうか?
もし、エラーの原因がお分かりでしたら
ご教授願いたいです🤲
さらに補足です
ご回答いただいた通りにやったところ、このようなエラーが出ました。
これはなんだかよく見るエラーです。
NillClassにstrftimeなんていうメソッドはない
ということで、
調べながら色々と手を動かしてみましたが、このエラーからもなかなか抜け出せません。
もし、エラーの原因がお分かりでしたら
ご教授願いたいです🤲