これはなに?
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
まあ
書かないほうがきれいだし、知っていればわかりやすいけどそれどっかに書いといてくれ。
参考
追記
わりと適当なこと書いてました。routesとprefixの対応直していただきましたありがとうございます。。。。