##コントローラちゃんと作ってルーティングしたのに!?
今日のメモは、きちんと設定できてるはずなのに、何故かルーティングエラーが出て、検索しまくるハメになってしまった話です。
##解決までの流れ
まずは、テーブル からご紹介。
novel_listsテーブル
novel_postsテーブル
この二つを使って、作成画面である、new.html.erbを作っていた訳ですが。
・・・・略 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ファイルと、コントローラの中身は消えますので、
どこかにコピーなどしておくかしないと、書き直しです。
では以上となります。!!