ルーターとコントローラー(1)
ルーターとコントローラー
ルーターの役割
クライアントのブラウザから発信された、URIによる要求(HTTPリクエスト)を受け取り、どのコントローラーの、どのアクションに割り当てるかを判断する。
割り当ての設定(ルーティング設定)は、routes.rb
ファイルを使って行う。
ルーティング設定のやり方
大きく分けるとリソースフルルートと非リソースフルルートの二種類がある。
リソースフルルート
リソース操作を満たすルートとして、一連の「お決まりの作業」を一纏めに表現する。 resourcesルートを設定する事で、対象となるモデルに対する7つの標準的なアクションに対応するルートを一括で設定できる。
例えば、
resources :users
とroutes.rbに記述すると、Userモデルに対するリソースフルルートが設定され、
Prefix(接頭辞) | HTTPメソッド | URI | コントローラー#アクション |
---|---|---|---|
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 / PUT | /users/:id(.:format) | users#update |
user | DELETE | /users/:id(.:format) | users#destroy |
となる。 この時、対応するコントローラーは、同名のUserController(users_controller.rb)になる。
非リソースフルルート
resourcesまたはresourceを使用しないルート。
ルーティング動作の点で、リソースフルルートと違いはない。 (というか、リソースフルルートも、実際に動作するルートは、非リソースフルルートと同じ形式)
HTTPメソッド 'URIパターン', to: 'コントローラー#アクション'
とroutes.rbに記述して設定する。
# 記述例 get '/login', to: 'authentications#new'
また、URIで指示されたパス名がコントローラーとアクションに相当しているとき、コントローラーとアクションの指定を省略できる。
get 'users/login', to: 'users#login'
は、
get 'users/login'
でok!
ルートの確認の仕方
$ rails routes