##概要
railsのroutes.rbに記述するルーティングについてのまとめ。
##内容
####ルーティングとは
受け取ったurlを認識し、適切なコントローラ内アクションやアプリケーションに割り当てる機能。
####構文
httpメソッド 'urlパターン', to: 'コントローラ#アクション'
#####ex) 以下のhttpリクエストを受け取った場合、以下のようになる。
GET /patients/17
routes.rb
get '/patients/:id', to: 'patients#show'
HTTPメソッド
クライアントから送られたリクエストの種別を表すもの。
####get
ページを表示する操作。
####post
データを登録する操作。
####put
データを変更する操作。
####delete
データを削除する操作。
###rootの設定
http://localhost:3000 / にアクセスした際にアクションを呼び出す際に使う。
root to: 'home#index'
###ネスト
一対多(一つの投稿に複数のコメント)の場合、urlは「https://×××××××/post/id/comment/id」のようになる。このような場合にルーティングをネストさせる。
resources :post do
resources :comment
end
###resources
7つのアクションのルーティングを自動定義する。
resources :コントローラー名
resources :コントローラー名, :コントローラー名
#複数コントローラのルーティングを一行で定義することもできる。
###only
resources :tweets, only: [:index, :snow] -->
#indexとshowのみを指定して定義できる
###resource
resourcesは複数形リソースな為、indexやid付のルーティングが生成されるが、
resourceは単数系リソースな為、idの無いリソースを生成できる。
例えば、マイページのような「ログインしているユーザー自身」のデータを表示する際はidを付ける必要が無い為、showアクションの/profile/:idではなく/profileを割り当てることができる。
###namespace
指定したルーティングの配下にルーティングを設定する.
名前空間でコントローラを分ける時などに使う。
admin画面の場合
namespace :admin do
resources :articles
end
生成されるurl
/admin/articles/:id
###member
特定のデータに対するアクションに対して利用する。
ユーザーidを含んだurlにアクセスできる。
ex)ユーザーに対するふフォロー機能を追加する時
以下のようなurlを想定。
http://$(DNS)/users/1/follow
memberを使ったurlは以下のようになる。
resources :users do
member do
post :follow
end
end
#memberルーティングが一つしかない場合は、onオプションを利用して1行で書ける
resources :users do
post :follow, on: :member
end
###collection
全てのデータに対するアクションに利用する。
ex) searchアクションでユーザー検索を行う
以下のようなurlを想定。
http://$(DNS)/users/search
collectionを使った記述は以下のようになる。
resources :users do
get :search, on: :collection
end