2011-03-20 63 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