town_centerコントローラ、sawmillコントローラ、quarryコントローラなどの複数のコントローラを持つ状況があります。route:nameに基づく異なるコントローラ
私のアプリケーションのURLは、おそらく/ town_center/viewやsawmill/view、quarry/viewなどのようなものである必要があります。
実際にこのようなルートを書き込む方法が問題です。例えば、town_centerコントローラの場合、私は次のようなものを持っています:
scope :path => '/town_center', :controller => :town_center do
get '/view/' => :view, :as => 'town_center'
end
これは問題ありません。実際にtown_centerコントローラでviewアクションを実行すると、URLにparams属性として存在しないため、建物のIDを取得する簡単な方法はありません。
get '/view/:name' => :view, :as => 'view_building'
しかし、この方法の問題点は、すべてが1つのコントローラにリダイレクトされるということです。
一つのシンプルなアイデアは、のようなルートを作成することです。だから、私の質問は、URLに識別子があり、それでも特定のコントローラにリダイレクトするようにするにはどうしたらいいですか?
これは一般的な考え方では間違っていると思われる場合は、その方法がありますか?
私はこれらのことを知っていますが、私はリソースを使用するのが好きではありません。自分のルートを手作業で書くことを好みます。私はちょうどURLの一部として:idを使うことができることを知っていますが、単一のidを持つtown_centerが1つしかないので、重複していると感じました。しかし、私はそれが歩く安全な道だと思います。 – Spyros
あなたは、各エンティティのIDが静的であると言っていますか?これらがハードコードされたIDの場合、ルート定義の一部としてそれらを渡すことができるはずです。例: 'get '/ view /' =>:view、:as as => 'town_center'、:id => 14' – Ryan
ルートリソースは複数である必要はありません。リソース:town_centerを持つことができます。自分のルートを転がることはお勧めしません。 –