Rails嵌套资源和collection_select

时间:2015-02-17 15:46:08

标签: ruby-on-rails ruby ruby-on-rails-4

我有两个带有has_many / belongs_to关联的模型。

#Projects.rb
class Project < ActiveRecord::Base
  has_many :tasks
end

#Task.rb
class Task < ActiveRecord::Base
  belongs_to :project
end

他们的路线嵌套如下:

#Routes.rb
resources :projects do
  resources :tasks
end

我想创建一个form_for来创建一个新任务。

但我希望这样做,以便用户可以使用collection_select方法选择任务所属的项目。

我的问题是form_for将project作为创建表单操作的参数之一。

= form_for @task do |f|

引发NoMethodError:

undefined method tasks_path for <#class:blablabla>

我知道我可以通过输入form_for的参数来解决这个问题,但我的想法是使用'collection_select'使其成为表单的一部分。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您只能为newcreate

创建单独的路线条目
#Routes.rb
resources :projects do
  resources :tasks, except: [:new, :create]
end
resources :tasks, only: [:new, :create]

缺点是你可能需要一个单独的表格:new vs:edit