1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】resourcesによって生成されるヘルパー名まとめ

1
Posted at

1. はじめに

Rails ではルーティングを resource / resources で宣言すると、各アクションに対応する パスヘルパー が自動で生成されます。

パスや HTTP メソッドについては 公式ドキュメント に詳しく記載されていますが、「どんなヘルパー名が生えるのか」 に特化した一覧はあまり見かけません。
そこで本記事では、Rails 8 を前提に resourceresources の違いによって生成されるヘルパー名を整理しました。

2-1. 複数形リソース

複数形の resources は id 付きのルートが生成されます。

config/routes.rb
resources :contacts
HTTP verb パス アクション ヘルパー名
GET /contacts #index contacts_path
GET /contacts/new #new new_contact_path
POST /contacts #create contacts_path
GET /contacts/:id #show contact_path(id)
GET /contacts/:id/edit #edit edit_contact_path(id)
PATCH/PUT /contacts/:id #update contact_path(id)
DELETE /contacts/:id #destroy contact_path(id)

2-2. 単数形リソース

config/routes.rb
resource :contact

単数形の resource は id を含まないルートが生成されます。
そのため contact_path に引数は不要です。

HTTP verb パス アクション ヘルパー名
GET /contact/new #new new_contact_path
POST /contact #create contact_path
GET /contact #show contact_path
GET /contact/edit #edit edit_contact_path
PATCH/PUT /contact #update contact_path
DELETE /contact #destroy contact_path

3. まとめ

Rails のルーティングは resource(単数)と resources(複数)で大きく挙動が変わります。

  • 複数リソースcontacts_path, contact_path(id) のように id 必須
  • 単数リソースcontact_path のように id 不要

同じ「パス」を使う場合でも、生成される ヘルパー名 は状況によって変わるため注意が必要です。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?