LoginSignup
51
39

More than 5 years have passed since last update.

RailsのRoutingの省略まじでおこ

Last updated at Posted at 2017-06-09

これはなに?

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の対応直していただきましたありがとうございます。。。。

51
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
39