【rails基礎】画面ロード時のエラーについて
おはようございます🌞
今日は個人アプリを作る中で起きた画面ロード時に起きたエラーについて書いていきたいと思います。
エラー内容
エラー内容は以下の二つです。
① LoadError in EventsController#choise_artist
Unable to autoload constant Set_list, expected ~ FesLive-app/app/models/set_list.rb to define it.
② Name Error in EventsController#choise_artist
uninitialized constant EventsController:Setlist
解決方法
①の解決方法
まずひとつ目のエラーですが、autoloadできないと言われています。
まず、Railsのautoloadとは「命名規則に則ったファイルを自動でrequireしてくれる機能」のことです。
つまり、下の記述の @set_lists = Set_list.all は命名規則に従っていないということになります。
実はrails の命名規則ではクラス名に対してアンダーバー(_)を使うことはできません。
そのため、Set_listクラスをautoloadできませんよ〜と言われているのでした。
class EventsController < ApplicationController def choise_artist @set_lists = Set_list.all @event = Event.find(params[:id]) end end
なので、「@set_lists = Setlist.all」とすれば①のエラーに関しては突破できました。
【参考】エラー画面
②の解決方法
クラス名の表記の仕方を変えautoloadはできるようになりましたが、今度はNameErrorのエラーがでました。
uninitialized ⇒ 初期化されていない ⇒ クラスが使える状態が整っていないということなので、
クラス名の指定の仕方に問題がありそうだということが分かります。
実際にSetlistモデルを見に行くと、クラス名が「SetList」とLが大文字になっていました。
なので、クラス名がまちがってますよ〜と言われているのでした。
class SetList < ApplicationRecord belongs_to :event end
この「@set_lists = SetList.all」とすればこのエラーは突破できました。
【参考】エラー画面
以上、ここまで読んでくださりありがとうございました。
分かりにくいやアドバイス等ありましたらコメントくださると幸いです。では!
【参考サイト】
Railsのautoloadについて(初心者向け) - Qiita
https://wa3.i-3-i.info/word16120.html