※2022年から技術系の記事は個人ブログに投稿しております。ぜひこちらもご覧ください→yamaday0u Blog
Railsを学習しているとルーティングのrootパスの書き方について疑問に思うことがあります。
いろいろな学習教材や技術ブログの記事を見ていると、以下のどちらかの書き方をしています。
root to:'pages#index'
root 'pages#index'
このto:があるのとないのとでは何か違いがあるのか。
Railsを学び始めてから半年間モヤモヤしていたので調べました!
結論:機能的な違いはない!
Railsドキュメントで確かめてみると、rootパスの書き方は実は3つありました。
# 1
root controller: 'pages', action: 'index'
# 2
root to:'pages#index'
# 3
root 'pages#index'
上記はいずれもpagesコントローラのindexアクションをルートパスに指定する記述です。
#1はおそらく最も厳格な書き方(あるいはRailsの昔の書き方?)です。
:controllerと:actionでコントローラとアクションを明示的に指定します。
#2は:toを使って#1を短縮した形で指定します。
#3は:toすら省略してrootパスを指定します。
つまり、:toの有無によってrootパスを指定するという機能について違いは生じないということですね!
rootメソッドのオプション
Railsのrootメソッドには、パスを指定するオプションが以下のように2つあります。
| オプション | 機能 |
|---|---|
| :controller, :action | コントローラとアクションを指定。必ずセットで指定 |
| :to | :controllerと:actionの短縮形。#でコントローラとアクションを区切る |
先述の通り、:toオプションすら省略できてしまうので、記述量を減らすことに重点を置いているなら#3の書き方を採用すると良さそうですね。