5

尝试路由:

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">

注意:新动作正确呈现表单动作

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

因此,当 form_for 处理它的阻塞时,我的 :shortcut 参数似乎被 :id 参数压倒了。现在,如果我在 form_for 块中手动创建 :url => {...} ,我可以使用 :shortcut 参数正确路由操作,但我希望保持代码干燥,另外我想报告如果它确实是一个错误,那么这个问题就会出现在 rails 上。

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

4

2 回答 2

2

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

不过,此页面上的最后一个答案对我有用...

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

于 2012-01-17T11:50:09.893 回答
2

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

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

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

<%= form_for([@shortcut, @text_elem]) do |f| %> 
于 2011-05-16T18:07:12.190 回答