Mav*_*ick 5 routing scope ruby-on-rails form-for
尝试路由:
scope :shortcut do
resources :text_elems
end
Run Code Online (Sandbox Code Playgroud)
使用带有表单部分的基本脚手架
*_form.html.erb*
<%= form_for(@text_elem, :shortcut => @shortcut) do |f| %>
...
Run Code Online (Sandbox Code Playgroud)
问题是:当我调用编辑操作时,表单 html 显示为:
<form ... action="/25/text_elems/25">
Run Code Online (Sandbox Code Playgroud)
注:该新动作正确呈现形式的行动:
<form ... action="/home/text_elems">
Run Code Online (Sandbox Code Playgroud)
因此,当 form_for 处理它的块时,我的 :shortcut 参数似乎被 :id 参数打败了。现在,如果我在 form_for 块中手动设置 :url => {...} ,我可以使用 :shortcut 参数正确路由操作,但我更愿意保持代码干燥,另外我想报告如果它确实是一个错误,这个问题就交给rails。
其他人可以确认这是一个错误吗?
实际上,您可以将值作为完整散列传递,而不是尝试依赖默认的 to_param (如果您所做的只是传递 @text_elem ,则会调用该值)
<%= form_for({:id => @text_elem.to_param, :shortcut => @shortcut}) do |f| %>
Run Code Online (Sandbox Code Playgroud)
但是,如果这实际上是嵌套资源,您也可以这样做:
<%= form_for([@shortcut, @text_elem]) do |f| %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1659 次 |
| 最近记录: |