我的路线看起来像
match 'solar_systems/:planet_num/:moon_num' => 'solar_system#moon', :as => :moon
我想要一个带有行星编号和月亮编号选择框的表格,并让它提交到此路线。但是,我无法使用moon_path
,因为如果动态参数未包含在moon_path(4, 1)
中,则会出现错误。我想要的甚至可能吗?如果是这样,我应该为路线的表格标签提供什么?
答案 0 :(得分: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
有关非资源路线的详细信息,请参阅this Rails guide。
答案 1 :(得分:0)
如果你在控制器上使用这个参数,你需要指定每个参数,你帮忙你需要做这样的事情
moon_path(planet_moon: 4, moon_num: 1)
干杯!