Help us understand the problem. What is going on with this article?

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

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

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

解決までの流れ

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

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ファイルと、コントローラの中身は消えますので、
どこかにコピーなどしておくかしないと、書き直しです。

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした