LoginSignup
4
4

More than 3 years have passed since last update.

Routing Error : uninitialized constant ◯◯Controller解決出来ない。

Last updated at Posted at 2020-02-18

コントローラちゃんと作ってルーティングしたのに!?

今日のメモは、きちんと設定できてるはずなのに、何故かルーティングエラーが出て、検索しまくるハメになってしまった話です。

解決までの流れ

まずは、テーブル からご紹介。

novel_listsテーブル
novel_postsテーブル

この二つを使って、作成画面である、new.html.erbを作っていた訳ですが。
resources novel_lists only: ・・・・略 do
 resources novel_posts only: ・・・・・略
end

novel_listsのnewアクションのnew.html.erbファイルにてformを作り。
createアクションでsaveされ、novel_postsのnewアクションのnew.html.erbに飛ぶ。

こんな流れで

 @novel_list = current_user.novel_lists.build(novel_list_params)

    if @novel_list.save
      flash[:success] = 'タイトルを作成しました'
      redirect_to new_novel_list_novel_post_path(@novel_list)
    else
      flash[:danger] = '作成に失敗しました。'
      render :new
    end
  end

作っていました。

飛んだ直後にエラーが。

Routing Error : uninitialized constant NovelPostsController

!!??ちゃんとルーティング設定したはず・・・
rails routesで確認してもルーティングはしっかりと出来ています。

new_novel_list_novel_post GET /novel_lists/:novel_list_id/novel_posts/new(.:format) novel_posts#new

何故だ・・・と色々な所をチェックしていくが、治らない。
仕方なくネット検索をかけ、同じようなエラー記事をみて行く。
しかし、中々、解決に至る記事を見つけられない。

その中で、見つけたのが
http://blog.livedoor.jp/tokyo_kinako/archives/21045311.html
このブログ記事。コントローラを作った際に
rails g controller NovelPost (s)  複数形にしていない事で起きた。と書かれていた。
複数形にしたつもりではいたが、まさか。と思って・・・・コントローラをチェックすると。

novelposts.controller←ファイル名が違ってる!?

はい、その通りです。
novelposts→正しくは、novel_posts.controllerにならなければいけません。

_ ただの棒線1本の違い。違いが細かすぎて出来てると思っている自分には、見えていませんでした。

という事で、今後は気をつけようとメモでした。

同じようなエラーが出た方はまず。

コントローラのファイル名を確認してみてください。

名前が違ったり、単数形になっていたりしているかもしれません。

気をつけて欲しいのは、作り直した場合、viewsファイルと、コントローラの中身は消えますので、
どこかにコピーなどしておくかしないと、書き直しです。

では以上となります。!!

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4