Posted at

【Rails】ルーティングは上から順に処理されるよという話


ルーティングでハマった


routes.rb

get '/users', to: "users#index"

post '/users', to: "users#create"
get '/users/:id', to: "users#show"
get '/users/new', to: "users#new"

このようなルーティングを設定していました。

すると、/users/newに飛んでほしいときもなぜかshowメソッドが呼び出されてしまいハマってました。

パラメーターを見てみると、



"id"=>"new"



ご丁寧にidがnewになりshowで処理されていました。


対処法は簡単


routes.rb

get '/users', to: "users#index"

post '/users', to: "users#create"
get '/users/new', to: "users#new"
get '/users/:id', to: "users#show"

対処法はいたって簡単でnewとshowの順番を入れ替えただけ!

ルーティングは上から処理されるのでnewメソッドをshowより上にしとけばきちんと処理されます。

単純なことですが、ルーティングの仕組みを理解してないとハマってしまうと思うのでここで共有させていただきました。


参考記事

Rails のルーティング - Rails ガイド