Rails
routes
省略

RailsのRoutingの省略まじでおこ

More than 1 year has passed since last update.


これはなに?

RailsのRoutingに慣れ始めた話はしましたが、まだ慣れ始めなので省略に慣れていないのです。

そこでdocumentとかを調べたのですが、調べきれなくて人に聞いたRoutesに関する話をつらつらと書きます。


省略、好きだよね

どこの世界の人も、基本的に省略から逃れられない。だっていちいち全部(それこそステートレスに)話していたら疲れる。なんだって省略したほうが、その省略が聞く世界では最速になる。


初めてなの

しょうがない部分があるとは思いつつ、初めての仕様だったりして、しかもググっても出てこない系は本当にこまる。ググりょくが足りないのはわかる。


で?

問題はこれ

   Prefix Verb   URI Pattern                 Controller#Action

user PUT /users/:id/update(.:format) users#update
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy

rails routesをすると出る結果で、prefix + "_path"で相対パス(つまり/hogehoge/higehige)ができるという一覧。(ちなみにver 5.0以前はrake routesだったはず。)

これの読み方がわかっていなかったのです。


どこが省略されているか?

prefixに穴がいっぱいあるのですが、それを叩きたくなりました。

そのとき上記の表を見て、"Prefix無いじゃん!"となったのがことの始まりです。(例えばpatch /users/:id叩きたいけど無いぞ・・・・みたいな)


結論。

結論から言うと、Prefixが省略されているのです

こちらでも書いたとおり、RailsはHTTPのメソッドとURLの組み合わせでルーティングします。 要するに、method + prefix_pathで叩けばいいんだよと。

そこで上の表を見ると、混乱するわけですが、下記のようにかけば初心者には優しいと思います。

   Prefix Verb   URI Pattern                 Controller#Action

users GET /users(.:format) users#index
users POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
user PATCH /users/:id(.:format) users#update
user PUT /users/:id(.:format) users#update
user DELETE /users/:id(.:format) users#destroy


まあ

書かないほうがきれいだし、知っていればわかりやすいけどそれどっかに書いといてくれ。


参考

http://railsdoc.com/routes


追記

わりと適当なこと書いてました。routesとprefixの対応直していただきましたありがとうございます。。。。