#環境・状況
- AWS上のCloud9
- Ruby on Rails
- UdemyのWeb開発入門完全攻略コース - プログラミングをはじめて学び創れる人へ!未経験から現場で使える開発スキルを習得!
- 「レクチャー224 一覧画面の動作確認」 にて
#症状
構築した画面の動作確認にて下記エラー発生
NoMethodError in Tasks#index
Showing /home/ec2-user/environment/rails_projects/todo/app/views/tasks/index.html.erb where line #3 raised:
undefined method `each' for nil:NilClass
Extracted source (around line #3):
1 <h1>ToDoアプリ</h1>
2 <ul>
3 <% @tasks.each do |task| %>
4 <li>
5 <%= check_box_tag '','' %>
6 <%= task.title %>
Rails.root: /home/ec2-user/environment/rails_projects/todo
エラー部分は
undefined method `each' for nil:NilClass
#原因
繰り返し処理の対象である@tasks
の中身がnil
である。
#解決策
コントローラーファイルであるTasks_controller.rb
内のスペルミス
class TasksController < ApplicationController
def index
@taskes = Task.all
^^^^^^ ※”Tasks”ではなく”Taskes”とスペルミス。
end
end
nil(他の言語ではnullということも多い、「何もない」という特殊なオブジェクトです)に対してメソッドを実行しようとすると、表記のような「NilClassにメソッドがない」旨のエラーになります。