Railsでリソースベースのルーティングにアクションを追加する方法
アクションを追加するには、resourcesメソッドにブロックを渡し、ブロックの中で「HTTPメソッドを表すメソッド アクション名」を記述する。
その際、会員一覧のようにリソースの集合を表すアクションは、collection
メソッドのブロックで囲む。
会員の状態変更のように個別のリソースを扱うアクションは、member
メソッドのブロックで囲む。
次の例は、MembersControllerにserch,suspend,restoreの3つのアクションを加える設定。getやpatchおんようにHTTPメソッドを表すメソッドには、複数のアクションを設定できる。
resources :members do collection { get "serch" } #メンバーの検索 member { patch "suspend", "restore"} #メンバーの停止・再開 end
これで下記のパスが生成される
アクション | パス | HTTPメソッド |
---|---|---|
search | /members/search | GET |
suspend | /members/123/suspend | PATCH |
restore | /members/123/suspend | PATCH |