通过link_to将参数传递给“新”操作

时间:2011-03-20 00:39:13

标签: ruby-on-rails ruby ruby-on-rails-3 link-to

Rails新手在这里,我很难过。在Rails中,我有一个具有多任务的项目模型。假设我有一个显示5个项目的视图,每个项目都有一个“新任务”链接,以便用户可以向任何一个项目添加新任务。所以:

项目1
新任务

项目2
新任务 等

如果新任务链接看起来像

link_to'New Task',new_task_path

告诉任务控制器点击链接的“新”操作的最佳方法是什么?我想我必须将project_id传递给新任务,但我无法解决如何做到这一点。

一如既往的帮助!

1 个答案:

答案 0 :(得分:7)

取决于如何定义路由,但如果将任务定义为项目的子资源(例如以下),则非常简单。

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)