下記の記事でresourcesを使うことで自動で一般的な7つのルーティングを自動生成できると記載させて頂きました。
REST以外の独自のアクションをルーティングで使いたい場合はcollection(集合)とmember(個別)を利用する必要があります。
collection
idなしのURLに対してルーティング情報を追加でいきます。(自動で追加される7つのルーティング情報以外に追加します。)
通常の例
記述方法
1 2 3 4 5 6 7 |
resources :admin do #全データを対象とする場合(つまり「:id」をURLにつけない。) collection do post: search1 post: search2 end end |
生成されるルーティング
1 2 |
POSTで「/admin/search1」に「admin#search1」 POSTで「/admin/search2」に「admin#search2」 |
collectionの簡易表記例
collectionを使わずに記述すると下記のようになります。
1 2 3 |
resoucers : users do post :another, action: :another_new,on : :new end |
on: :追加したいアクション
ルーティングURLを追加したいアクションを追加します。
下記のようなルーティングが生成されています。newの下階層に追加されています。
1 |
another_new_user POST /users/new/another(.:format) users#another_new |
member
特定のデータ(:id)に対してURLを生成したい場合に使います。
例
1 2 3 4 5 6 7 |
resources :admin do #特定のデータを対象とする場合(つまり「:id」をURLにつける。) member do get: getdata1 get: getdata2 end end |
生成されるルーティング
1 2 |
GETで「/admin/1(任意)/search1」に「admin#getdata1」 GETで「/admin/1(任意)/search2」に「admin#getdata2」 |
この記事へのコメントはありません。