【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」とすれば①のエラーに関しては突破できました。

【参考】エラー画面
f:id:shun_0211:20200517093650p:plain

②の解決方法

クラス名の表記の仕方を変えautoloadはできるようになりましたが、今度はNameErrorのエラーがでました。
uninitialized ⇒ 初期化されていない ⇒ クラスが使える状態が整っていないということなので、
クラス名の指定の仕方に問題がありそうだということが分かります。
実際にSetlistモデルを見に行くと、クラス名が「SetList」とLが大文字になっていました。
なので、クラス名がまちがってますよ〜と言われているのでした。

class SetList < ApplicationRecord
  belongs_to :event
end

この「@set_lists = SetList.all」とすればこのエラーは突破できました。

【参考】エラー画面
f:id:shun_0211:20200517093741p:plain


以上、ここまで読んでくださりありがとうございました。
分かりにくいやアドバイス等ありましたらコメントくださると幸いです。では!


【参考サイト】
Railsのautoloadについて(初心者向け) - Qiita
https://wa3.i-3-i.info/word16120.html