LoginSignup
1
1

More than 1 year has passed since last update.

Railsのルーティング

Last updated at Posted at 2023-03-31

ルーティングとは

Railsにおいてルーターとは、Webアプリケーションに対するリクエストの処理を担当する機能である。URIによるHTTPリクエストを、どのコントローラーの、どのアクションに渡すべきかを判断する。

ルータが行うアクションへの振り分け作業をルーティングと呼び、どのコントローラーのどのアクションを呼び出すかという振り分けの設定をルートと呼ぶ。

ルート設定には、configディレクトリにあるroute.rbというファイルを使用する。

HTTPメソッド

主なHTTPメソッド

メソッド 目的
GET 情報をサーバーから取得する
POST 情報をサーバーに取り込む
PUT 情報を置き換える
PATCH 情報の一部を置き換える
DELETE 情報を削除する

基本の書き方

route.rb
Rails.application.routes.draw do
  get  "posts/new"  => "posts#new"
  post "posts/create" => "posts#create"
end

このように記述している場合、「posts/new」は、ドメイン:ポート番号/posts/newという宛先に相当し、「posts#new」は、PostsControllerのindexアクションであることを示している。

リソースフルルート

モデルを介したリソースに対するデータの追加、既存データの更新、削除、取得、および複数データの一覧表示といった、リソースを満たすルートをリソースフルルートと呼ぶ。

Railsではresourcesとして表現される。resourcesルートを設定すると、対象となるモデルに対する7つの標準的なアクションに対応するルートを一括して設定してくれる。

Userモデルに対するリソースフルルートを設定するには、route.rbに次のように記述する。

$ resources :users

この設定の結果、以下のルートが実装される。

Prefix メソッド URI コントローラー#アクション 処理
users GET /users users#index 一覧画面表示
users POST /users users#create 登録処理
new_user GET /users/new users#new 新規画面表示
edit_user GET /users/:id/edit users#edit 編集画面表示
user GET /users/:id users#show 詳細画面表示
user PATCH/PUT /users/:id users#update 更新処理
user DELETE /users/:id users#destroy 削除処理

また、Railsでは1つのリソースに対するリソースフルルートとして、resourceルートが用意されている。

リソースフルルート以外のルートの設定方法

リソースフルルート以外のルートの設定には、getやpostを使用することができる。基本的にはこれらはHTTPメソッドに対応している。その際、リクエストされる宛先は 「URIパターン」として指示する。

設定の基本形式は次のようになる。

HTTPメソッド 'URIパターン', to:'コントローラーアクション'

ルートの実装は、

$ rails route

で確かめることができる。

ルーティングのネスト

Userモデルとその子モデルとしてのHobbyモデルを考える。それぞれのリソースに相当するデータベースのテーブル名は、usersとhobbiesになる。
親子関係のルートを入れ子にするには、親のリソースルートのブロックの中に、子のリソースルートを設定すればよい。

resources :users do
  resources :hobbies
end

このように記述することで、どのuserに対してのhobbyであるかをルーティングで紐づけることができる。

1
1
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
1
1