はじめに
この記事はプログラミング初学者である私自身の備忘録として残します。
プログラミングの学習を初めてからというもの、ルーティングの記述ではずっとresourcesメソッドを使い続けていたので、なぜこのメソッドを使うのかおさらいしてみました。結論「やっぱり便利だな〜」。
ルーティング(routes.rb)の記述に際して
resourcesメソッドの 不使用時 と 使用時 のコードを比べてみました。
あれ?そもそもルーティングってなんだっけ?って思った方は、こちらを読んでみてください。
### resourcesメソッド ** 不使用時 **
root to: 'posts#index'
get '/posts', to: 'posts#index'
get '/posts/new', to: 'posts#new'
post '/posts', to: 'posts#create'
### resourcesメソッド ** 使用時 **
root to: 'posts#index'
resources :posts, only: [:index, :new, :create]
resourcesメソッド不使用時の
get '/posts', to: 'posts#index'
を説明すると、
HTTPメソッドのget
を使ってposts
パス(URIパターン)を取得した際の処理として、posts
コントローラのindex
アクションを指定する。
という意味です。
形としては
HTTPメソッド 'パス(URIパターン)', to: 'コントローラー名#アクション名'
てなかんじです。
resourcedメソッド使用時のresources :posts, only: [:index, :new, :create]
を説明すると、
posts
コントローラーを参照(resource)して、コントローラーが持つ7つのアクションからindex
、new
、create
のみを使う。
という意味です。
形としては
resources :コントローラー名, only: [:アクション名, :アクション名・・・]
となります。
実はこれ、only
を省けば7つのアクションすべて使えるという意味になります。
##まとめ
どちらも同じ処理を行うコードですが、
resourcesメソッド不使用時では3行使って記述されているコードが、使用時ではたった1行にまとめられています。さらにもう一点、resourcesメソッドを使えば、HTTPメソッド
とパス(URIパターン)
を指定する必要がありません。これだけで十分このメソッドの便利さが分かると思います。
HTTPメソッド や パス(URIパターン)について気になった方は、自分が作業中のファイルをターミナルで開いて、rails routes
で確認してみてください。(言葉の意味が分からない場合は文字をクリック)
##もっと詳しく知りたい方は
以下にリンクを貼っておきます。
・Samurai Blog
[【Rails入門】resourcesの使い方まとめ]
(https://www.sejuku.net/blog/27728)
・Pikawaka
【Rails】resourcesメソッドを徹底解説!