Rails でscaffoldで作成されるような機能を作ろうとしています。
"/problems"という画面に、各レコードに対する「削除」というリンク付きの文言を表示させることまではできたのですが、そのリンクをクリックしたところ以下のエラーが発生しました。
発生している問題・エラーメッセージ
NoMethodError in ProblemsController#destroy undefined method `destroy' for nil:NilClass
Extracted source (around line #16):
15 def destroy 16 @problem.destroy 17 end
該当のソースコード
関係する各ファイルのコードを示します。関係なさそうなところは省略してあります。
↓[app\models\problem.rb]
class Problem < ApplicationRecord end
↓[app\controllers\problems_controller.rb]
class ProblemsController < ApplicationController def index @problems = Problem.all end def destroy @problem.destroy end end
↓[app\views\problems\index.html.erb]
<% @problems.each do |problem| %> <%= link_to '削除', problem, :method => :delete, data: { confirm: 'Are you sure?' } %> <% end %>
原因の推定
destroyアクションの1行目にdebuggerを挿入し、byebugプロンプトで"@problem"や"problem"と入力したところ、いずれも"nil"と返ってきたため、link_toでdestroyアクションに移るときに、削除したいレコードの情報がうまく引き継げていないのではないかと考えています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/08/11 01:54 編集