2010-07-23 43 views
1

我試圖使用具有寧靜路徑的嵌套控制器,以便我都組織和等。這裏是我的routes.rb副本至今:Rails寧靜的命名空間,資源...新手問題

map.root :controller => "dashboard" 

    map.namespace :tracking do |tracking| 
    tracking.resources :companies 
    end 

    map.namespace :status do |status| 
    status.resources :reports 
    end 

鏈接到孩子的控制器路徑做工精細現在,

<%= link_to "New Report", new_status_report_path, :title => "Add New Report" %> 

但是,當我試圖映射到剛剛父控制器的指數我的問題接踵而至路徑。

<%= link_to "Status Home", status_path, :title => "Status Home" %> 

我最終得到這個當我加載網頁與鏈接:

undefined local variable or method `status_path' 

是否正確設置這種鏈接我的路線?

更新:我應該補充說,沒有數據與父「狀態」控制器相關聯。它僅僅作爲與狀態相關的其他控制器的類別佔位符,例如:報告。

回答

0

如果您希望/狀態轉到狀態控制器,它應該是一個資源,而不是一個名稱空間。您以同樣的方式嵌套資源:

map.resource :status do |status| 
    status.resources :reports 
end 
+0

也許我在一個命名空間是什麼困惑,但我的「身份」類別沒有與其直接關聯的任何數據。這只是一個組織的佔位符類別。我想要做的只是讓它呈現該類別的登錄頁面,並鏈接到報告等內容。 – Dan 2010-07-23 22:36:27

+0

資源不必具有與其關聯的數據。如果你想要在「/狀態」有一個頁面,你必須將它路由到某個地方。如果你想讓你的路線保持平靜,你應該創建一個StatusesController,並使狀態成爲如上所述的單一資源。然後/狀態將轉到StatusesController的show方法。另一方面,有時應用程序會爲所有不適合作爲資源路徑的頁面使用PagesController,您可以像map.status「/ status」,:controller =>:pages,:action => :狀態' – mckeed 2010-07-24 03:44:38

0

命名空間不是資源。

map.resources :statuses do |status| 
    status.resources :reports 
end 

另外,您對status_path的調用需要一個ID。

status_path(:id => @status.id)

status_path(@status)

+0

以及我的狀態不是資源,報告是。我的項目中沒有這樣的事物作爲狀態ID。 – Dan 2010-07-23 22:33:02

+0

然後,請更新您的帖子,以便問題提及您嘗試使用「status_path」完成的操作。 – jdl 2010-07-24 06:04:58