じぶんメモ

プログラミングのメモ、日常のメモとか。

Railsで独自のアクションをルーティングに加える

railsにはリソースベースのルーティングで、 index, new, create, show, edit, update, destroyが用意されている。

  resources :posts

独自のアクションをルーティングに追加する方法

  # これだとposts/:id(hogehoge)とみなされる
  get 'posts/hogehoge' => 'posts#hogehoge'

ただしこれだとpostsのidが'hogehoge'をshowする、とみなされてしまう。
リソースベースのルーティングに独自のアクションを追加する場合はcollectionまたはmemberを使用する。

  resources :posts do
    # collectionを使用するとposts/hogeとなる
    collection do
      post :hoge
    end

    # memberを使用するとposts/:id/hogehogeとなる
    member do
      post :hogehoge
    end
  end