2010-05-07 43 views
2

自定義參數我有這樣的路線:form_form和串流中刪除

# 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| %> 

這用於工作,並用於構建一個爲項目創建url根據@item對象的狀態更新項目的URL。

但是,這不是在這種情況下工作,因爲路線不存在未經shop_id參數,我不知道怎麼說的的form_for是這樣的:

<% form_for [:backshop, @item], :shop_id => @shop do |f| %> 

因爲它試圖使用@item,比如:shop_id參數。

或者這樣

<% form_for [:backshop, @shop, @item] do |f| %> 

因爲它試圖建立這個網址:

backshop_shop_order_path 

我知道我可以從中提取部分的的form_for聲明,並做根據不同的呼叫如果編輯

<% form_for(@item, :url => backshop_items_path(@shop)) do |f| %> 

<% form_for(@item, :url => backshop_item_path(@shop, @item)) do |f| %> 

但我只是想不這樣做,因爲我有一大堆的車型,是一些無聊:)

感謝您的任何建議

F。

回答

0

看起來像你想要做一個命名空間嵌套的資源,也許你可以重寫你的路線,像

map.namespace(:admin) do |admin| 
    admin.resources :shops do |admin_shop| 
    admin_shop.resources :item 
    end 
end 

現在,你應該能夠使用[@shop, @item]得到你想要的路線。使用rake routes來檢查路線,看看它們是否符合你的喜好。

+0

感謝科裏,這是非常有幫助的。 – fguillen 2010-05-09 15:41:41