自分がcollection,memberを忘れていたので備忘録として。
railsで7つのアクション以外のルーティングをする場合
そもそも、、、7つのアクションとは
何か投稿するといった内容をイメージすると
index → 一覧表示
show → 詳細表示
new → 新規投稿
create → 新規投稿を保存
edit → 投稿を編集
update → 投稿を更新
destroy → 投稿を削除
これらは
resources :コントローラー名
でルーティングができるので便利です。
アクションを限定したいときはonly,で設定します。
7つのアクション以外のルーティングを設定したいときはどうするのか
方法としては2つあって
1つは
collection do
get(アクションに応じたHTTPメソッド) 'アクション名'
end
もう1つは
member do
get(アクションに応じたHTTPメソッド) 'アクション名'
end
この2つの違いはURIパターンに
:idが含まれるかどうか、です。
rails routes でURIパターンを確認し、
/tweets/search(.:format)
であればcollectionを
/tweets/:id/search(.:format)
であればmember を使います。
HTTPメソッドもrails routes を実行すればわかりますが、
基本的にはgetが多いイメージです。。
get:何か出力を要求
post:データを送る という感覚です。