RailsでモデルのインスタンスからURLのパスを取得するときに、その取得するURLを変更する方法
例えば、Railsのscaffold
で、Viewなどを作成した場合、次のようなコードが生成されるかと思われます。フォーム画面だったりすると:
<%= form_for(@foobar) do |f| %>
....
<% end %>
であったり、あるいは
<%= link_to 'Show', @foobar %>
といったように。このテンプレートから、恐らく何らかの形で、モデルからパスを取得できるものである、っと推測が出来るように感じます。
しかし、このFoobar
モデルが、HogeHoge
モデルと関連するようになったため、当初URL構造を/foobar/:id
から、/hogehoge/:id/foobar/:id
といったURLにしたとします。
このとき、@foobar
からアクセスすると、以前のまま/foobar/:id
を生成してしまいます。仕方ないので、下のようにリンクを渡したりしています:
<%= link_to 'Show', hogehoge_foobar_path(:hogehoge_id => @hogehoge.id, :id => @foobar.id) %>
しかし、これはどう考えてもバットノウハウのように感じます。本来ならば、モデルインスタンスからURLを取得するほうが望ましいように感じます(要は@foobar
から取得できるほうが望ましいように感じます)。
もし、モデルから取得されるURLを修正する方法について、何らかの参照するべきドキュメント、あるいは方法があれば教えてください。