2011-03-20 56 views
2

Rails的新手在這裏傳遞參數給一個「新」的動作,我很爲難。在Rails中,我有一個項目模型,它有許多任務。假設我有一個顯示5個項目的視圖,每個項目都有一個「新任務」鏈接,以便用戶可以將任務添加到任何一個項目中。所以:通過的link_to

項目1
新任務

項目2
新任務 等

如果新任務鏈接看起來像

的link_to '新任務',new_task_path

什麼是最好的方式來告訴任務控制器的'新'行動哪個鏈接被點擊?我想我必須將project_id傳遞給新的任務,但我無法解決如何去做。

幫助讚賞一如既往!

回答

6

取決於你的路由是如何定義的,但是如果任務被定義爲一個項目的子資源(如以下),那麼它很簡單。

resources :projects do 
    resources :tasks 
end 

這將產生途徑,如:

new_project_task GET /projects/:project_id/tasks/new(.:format)       {:controller=>"tasks", :action=>"new"} 

然後你就可以通過鏈接到它:

link_to 'New Task', new_project_task_path(@project) 
+0

正是我一直在尋找。謝謝你的幫助。似乎我必須登錄才能爲此答案投票。明天會做。 – Ben 2011-03-20 01:37:53

+1

@Ben它沒有必要做到這一點:'new_project_task_path(:PROJECT_ID => @ project.id)'。你可以傳入實例,Rails處理剩下的內容:'new_project_task_path(@project)'。 – Mohamad 2013-11-19 14:08:11