1

次のようなルートがあります

match 'solar_systems/:planet_num/:moon_num' => 'solar_system#moon', :as => :moon

惑星番号と月番号の選択ボックスを備えたフォームを作成し、このルートに送信してもらいたいです。moon_pathただ、このように動的パラメータが含まれていないとエラーになるので使えませんmoon_path(4, 1)。私が望むことは可能ですか?もしそうなら、ルートのフォームタグに何を与えますか?

4

2 に答える 2

0

ルーティング ヘルパー メソッドを使用する必要はありませ。フォームをレンダリングする時点では必要なパラメーターがわからないため、ここでは使用できません。ただし、宛先 URL に必要なのはコントローラーとアクションだけです。したがって、これは機能するはずです:

= form_tag('/solar_systems/moon') do
  = select_tag(:planet_num, ...
  = select_tag(:moon_num, ...

これにより、フォームタグがレンダリングされます。リクエストを処理するには、別のルートも追加して、正しいコントローラー アクションが呼び出されるようにする必要があります。

match 'solar_systems#moon' => 'solar_system#moon', :via => :post

または、アプリケーションのコンテキストでより理にかなっている場合は、既存のルートを変更してパラメーターをオプションにすることができます。

match 'solar_systems(/:planet_num(/:moon_num')) => 'solar_system#moon', :as => :moon

非リソース ルートの詳細については、この Rails ガイドを参照してください。

于 2012-10-28T22:46:23.483 に答える
0

コントローラーでこのパラメーターを使用する場合、それぞれのパラメーターを指定する必要があります。ヘルパーでは、次のようなことを行う必要があります。

moon_path(planet_moon: 4, moon_num: 1)

乾杯!

于 2012-10-28T23:13:56.180 に答える