LoginSignup
1
1

【Ruby on Rails】CRUD操作用ルーティングの自動設定の生成・利用方法【名前付きルーティング、resources、resource】

Last updated at Posted at 2024-02-25

勉強前

・ルーティングの自動生成ってどうやったら何が生成される?
  resources?でなんかCRUD操作用のパスが追加される?
・ルーティング用ヘルパーがいっぱいあるように見えて整理がつかない...
  xxx_path?xxx_url?xxxには何が入る?

名前付きルーティング

routes.rbの記述

  • 特定のパスへのリクエストを特定のcontrollerのメソッドに割り当てる
    • controller(xxx_controller.rb)とメソッドを作成
    • routes.rbにルーティング設定を記述
      紐づけは命名規則によって行われる。

例).../patients/{id} へのGETリクエストをルーティング

app/controllers/patienrs_controller.rb
  def show
    # リクエストに対する処理
  end
config/routes.
get '/patients/:id', to: 'patients#show'
get '/patients/:id' => 'patients#show'
ヘルパーの利用

・patients_path(リソース名+_path) → /patientsを取得できる
 _pathでなく_urlを使うとURL(ホスト名 + ポートも含む)を取得できる

ルーティング設定の自動生成

resources宣言

routes.rbの記述

下記を宣言することで、CRUD操作にあたる各HTTPメソッドのアクション & 各アクションの入り口となるページについてのルーティングが自動生成される。

config/routes.rb
resources :photos
HTTPメソッド 生成されるパス 紐づけ先のcontroller#メソッド メソッドの役割
GET /photos photos#index 一覧ページ表示
GET /photos/new photos#new 新規登録ページ表示
POST /photos photos#create 新規登録
GET /photos/:id photos#show 特定の写真のページ表示
GET /photos/:id/edit photos#edit 写真情報の更新・編集ページ表示
PATCH/PUT /photos/:id photos#update 写真情報の更新
DELETE /photos/:id photos#destroy 写真の削除

各アクションのルーティング先のメソッドでは、操作の後にどこかしらのページにリダイレクトさせる処理を書く(操作後にどのページを表示すれば良いか示してあげる)必要があることが多い。

ヘルパーの利用
ヘルパー 返るパス
photos_path /photos
new_photos_path /photos/new
edit_photos_path(:id) /photos/:id/edit
photo_path(:id) /photos/:id

resource宣言

routes.rbの記述
config/routes.rb
resource :user

※resource :{単数形}

これも、resources宣言同様ルーティングが自動生成される。
resourcesとの違いは
・操作するリソースが1つしかない前提になる(リソース名の表現が単数形になる)
→パスパラメータ(:id)を含むパスはない + 一覧表示ページのパスもない

ヘルパーの利用

resourcesと同様。当然これも単数形のみ。

まとめ

  • resources:{リソース名(複数名詞)} → CRUD操作とCRUD操作をするためのページ用のルーティング設定(このパス・HTTPメソッドへのリクエストはこのcontrollerのこのメソッドで受けられます)が自動生成される
  • resources:{リソース名(単数形)} → resourcesと同じ。ただし複数リソース前提のパスはなくなる
  • ヘルパー
    • {(命名規則に沿ったパスの名前)}_url → 完全なurlを返す
    • {(命名規則に沿ったパスの名前)}_path → urlのホスト名より後を返す

勉強後

整理にあたっては下記あたりを押さえる必要があった。
・resource(s)で生成されるルーティング設定には、ページ(View)表示用のものとCRUD処理用のものとがあること
・パスを返すヘルパーは2種類:xxx_path、xxx_url
・xxxに入るのは、自動生成されたルーティング設定に紐づくパス名(命名規則に沿って自動生成されるので、覚えたり調べたりする必要がある)

ルーティングのネストやグループ化については使う場面が来たら加筆しよう...

参考

Rails のルーティング-Railsガイド(v7.1)

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