2013-12-19 153 views
1

我是Ruby on Rails的新手,我一直在學習項目,但遇到了一個問題。我正在嘗試建立從「任務」控制器下的視圖到新時間視圖的鏈接。我試圖在視圖上像這樣鏈接:Rails路由問題

<%= link_to "New Timetrack", new_project_list_task_timetrack_path(@project, @list, @task) %> 

而且我收到此錯誤:

沒有路由匹配{:動作=> 「新」,:控制器=> 「timetracks」 :project_id => nil,:list_id =>#< List id:1,name:「Test」,description:「Test」,created_at:「2013-12-18 21:00:39」,updated_at:「2013-12 -18 21:00:50「,project_id:1,default:nil>,:task_id =>#>任務ID:1,描述:」第一個任務「,已完成:false,list_id:1,created_at:」2013-12 -18 21:00:57「,updated_at:」2013-12-18 21:00:57「,默認:無>}

我確保在timetracks控制器中有一個「新」動作。我創建的鏈接上面的方式,因爲我是如何看待Rails的腳手架這是像這樣的項目和列表之間的關係:

<%= link_to "Create To-Do", new_project_list_path(@project) %> 

所以我很爲難,想一些幫助。任何信息表示讚賞!

+0

我相信你需要一個route.rb中的關係路徑,然後重新啓動服務器。 –

+0

我想你不需要通過@project對象進行新的操作 – Magnum

+0

@ HithamS.AlQadheeb:無需開發 – devanand

回答

0

嘗試使用new_project_timetrack_path 如果無奈,看看bash命令rake routes的輸出,並找到你需要的路線。

+0

當我抽取路線時,我看到路線項目/:project_id/lists /:list_id/tasks/:task_id/timetracks/new – Malarky44

0
在你的config/routes.rb文件

必須行這樣的:

resources :projects do  
    resources :lists do  
    resources :tasks do  
     resources :timetracks  
    end 
    end 
end 

,然後耙編譯像

host:3000/projects/<project_id>/lists/<list_id>/tasks/<task_id>/timetracks/new 

路我希望這可以幫助你。

+0

我的routes.rb文件包含此代碼。另外值得注意的是,鏈接:new_project_list_task_path(@list)有效,但new_project_list_task_timetracks_path(@task)不起作用 – Malarky44

+1

任務和時間軌跡模型有關係嗎?時間軌道belongs_to任務?和Project,List有關係嗎? – rfellons