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

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

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

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

Q&A

解決済

1回答

1778閲覧

undefined method `id' for nil:NilClass

TakuyaOhira

総合スコア13

Ruby on Rails

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

0グッド

0クリップ

投稿2019/01/09 03:40

前提・実現したいこと

rialsでお金管理のwebアプリを作成中です。
個々の入出金データにuser_idを付けて一覧表示させています。
saveするとdbにデータは保存されるのに下記のようなエラーが出てきて困っています。

発生している問題・エラーメッセージ

NoMethodError in CashController#index undefined method `id' for nil:NilClass Extracted source (around line #4): def index @client = Client.find_by(id: params[:id])   @cashes = Cash.where(user_id: @client.id )  ♯4 end

該当のソースコード

controller

1class CashController < ApplicationController 2 def index 3 @client = Client.find_by(id: params[:id]) 4 @cashes = Cash.where(user_id: @client.id ) 5 end 6end

controller

1 def create 2 @client = Client.find_by(id: params[:id]) 3 4 @cash_new = Cash.new( 5 user_id: params[:user_id], 6 trading_day: params[:trading_day], 7 principal: params[:principal], 8 savings_account: params[:savings_account], 9 receipt_of_payment: params[:receipt_of_payment], 10 memo: params[:memo] 11 ) 12 13   if @cash_new.save 14 15 flash[:notice] = "新規登録されました" 16 17 redirect_to("/cash/:id/index") 18 else 19 render("cash/index") 20 end 21```end 22 23```view 24<%= form_tag("/cash/create") do %> 25 <p>user_id: <label><input type="number" name="user_id" value=<%= @client.id %>></label> 26 </p> 27 <p>trading_day: <label><input type="date" name="trading_day"></label> 28 </p> 29 <p>receipt_of_payment: <label><input type="date" name="receipt_of_payment"></label> 30 </p> 31 <p>principal: <label><input type="number" name="principal" value=0></label> 32 </p> 33 <p>savings_account: <label><input type="number" name="savings_account" value=0></label> 34 </p> 35 <p>memo: <label><input type="name" name="memo"></label> 36 </p> 37 <p><label><input type="submit" value="登録"></p> 38<% end %> 39 40<% @cashes.each do |cash| %> 41 <p> 42 <%= cash.user_id %> 43 <%= cash.trading_day %> 44 <%= cash.receipt_of_payment %> 45 <%= cash.principal.to_s(:delimited) %> 46 <!--.to_s(:delimited)=数値をカンマ区切り--> 47 <%= cash.savings_account.to_s(:delimited) %> 48 <%= cash.memo %> 49 <%= link_to("編集","/cash/#{cash.id}/edit") %> 50 <%= link_to("削除","/cash/#{cash.id}/destroy", 51 {method:"post"}) %> 52 </p> 53<% end %>

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

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

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

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

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

guest

回答1

0

ベストアンサー

redirect_to("/cash/:id/index")

が、問題になっていそうです。

ruby

1redirect_to action: :index, id: @cash_new.id

もしくは

ruby

1redirect_to("/cash/#{@cach_new.id}/index")

だと思います

投稿2019/01/09 03:53

asm

総合スコア15147

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

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

TakuyaOhira

2019/01/09 04:15

ご指摘いただいた個所を redirect_back(fallback_location: 'something') にしたところ正常に動きました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問