使用form_for(部分)路由范围问题

时间:2010-07-30 13:08:46

标签: ruby-on-rails routing scope form-for

尝试路线:

scope :shortcut do
 resources :text_elems
end

使用形式部分

的基本脚手架
*_form.html.erb*
<%= form_for(@text_elem, :shortcut => @shortcut) do |f| %> 
...

问题:当我调用编辑操作时,表单html显示为:

<form ... action="/25/text_elems/25">

注意: new 操作正确呈现表单操作:

<form ... action="/home/text_elems">

因此,当form_for处理它的块时,我的:快捷方式param似乎被:id param打败了。现在,如果我手动创建:url =&gt;我可以使用:快捷方式参数正确路由操作{...}在form_for块中,但我更希望保持代码干,再加上我想将这个问题报告给rails,如果它确实是一个bug。

其他人可以确认这是一个错误吗?

2 个答案:

答案 0 :(得分:2)

实际上,您可以将值作为完整哈希值传递,而不是尝试依赖默认的to_param(如果您所做的只是传递@text_elem,则会调用它)

<%= form_for({:id => @text_elem.to_param, :shortcut => @shortcut}) do |f| %> 

但是,如果这实际上是嵌套资源,您也可以这样做:

<%= form_for([@shortcut, @text_elem]) do |f| %> 

答案 1 :(得分:2)

我遇到了同样的问题,上述答案都没有帮助。

本页的最后一个答案虽然适用于我...

https://rails.lighthouseapp.com/projects/8994/tickets/6736-problem-with-scoped-routes-and-form_for-helper