リソースに対してデフォルトで作成されるルーティング
Railsでは、リソースベースのルーティングを使うことで、リソースのコントローラに対する共通のルーティングを簡単に書くことができます。
resourcesを宣言するだけで、コントローラのindex
、show
、new
、edit
、create
、update
、destroy
アクションを使える状態になります。
各アクションを個別に宣言する必要はありません。
ルーティングヘルパー
ルーティングをリソースで作成するとルーティングヘルパーが使えるようになります。
ルーティングヘルパーには、_path
ヘルパーと、それぞれに対応する_url
ヘルパーがあります。
リソースを追加する
リソースを定義することでデフォルトのルーティングは作成されますが、ときにデフォルト以外のリソースの追加が必要なケースがあります。
ルーティングを追加したいときには、メンバー(member)ルーティングとコレクション(collection)ルーティングが使えます。
2つのちがいは、作成されるURLにidを含めるかどうかです。
member : idを含めたURLを生成
collection:idを含めないURLを生成
ブロックの内側で認識させるHTTP verbをルーティング名ごとに指定して使います。
resources :xxxxxx do member do get 'xxxxxx' end end
なお、member do 〜 end は:on
オプションを指定することで省略することができます。
resources :xxxxxx do get 'zzzzzz', on: :member end
onを省略することもできます。
その場合は、リソースidの値の取得にparams[:id]
ではなくparams[:xxxxxx_id]
を使う点が異なります。ルーティングヘルパーも、zzzzzz_xxxxxx_url
がxxxxxx_zzzzzz_url
に、zzzzzz_xxxxxx_
path
がxxxxxx_zzzzzz_
path
にそれぞれリネームされます。