我有这条路线:
# config/routes.rb
map.namespace :backshop, :path_prefix => '/:shop_id/admin' do |backshop|
backshop.resources :items
end
我想使用form_for魔术在两个视图上重用相同的表单:新视图和编辑视图:
<% form_for [:backshop, @item] do |f| %>
这曾经有效,并用于根据@item对象的状态为项目构建创建 url或更新项目的 url。
但这不适用于这种情况,因为没有shop_id参数的路线不存在,而且我不知道如何对form_for说这样的事情:
<% form_for [:backshop, @item], :shop_id => @shop do |f| %>
因为它尝试像:shop_id参数一样使用@item 。
或者像这样
<% form_for [:backshop, @shop, @item] do |f| %>
因为它试图构建这个 url:
backshop_shop_order_path
我知道我可以从部分中提取form_for声明,并根据new或edit进行不同的调用:
<% form_for( @item, :url => backshop_items_path( @shop ) ) do |f| %>
和
<% form_for( @item, :url => backshop_item_path( @shop, @item ) ) do |f| %>
但我只是不想这样做,因为我有一堆模型而且有些无聊:)
感谢您的任何建议
F。