idを持っていないルートの場合
まだidを持っていない、新規のリソースに対するルート(コレクションルート)を設定するとき。
resources :books do collection do get 'search' end end
結果
books
のリソースフルルート(一般的な7つのルート)に加えて、1番上に/books/search
が追加されている。
対応するアクションはbooks#search
となっていて、booksコントローラー内にseachアクションの記述があれば、/books/search
へユーザーがアクセスしたときにseachアクションが実行される。
onを使った簡易的な書き方もある。
resources :books do get :search, on: :collection end
idを持つルートの場合
/books/:id/edit
のように、idを特定できるルートを「メンバールート」と呼ぶ。
resources :books do member do get 'search' end end
さきほど書いたcollectionをmemberにしただけ。
結果(seachに該当するルートのみ)
search_book GET / books/:id/search(.:format) books#search
上からPrefix、HTTPメソッド、URIパターン、コントローラー名#アクション名となっている。
こちらも簡易的な書き方がある。
resources :books do get :search, on: :member end
同じく、さきほど書いたcollectionをmemberにしただけ。
参照