ihatov08 blog

プログラミング初心者だけどRailsとSwiftマスターします

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