我的模型父级有很多子级,而子级属于父级
class Parent < ActiveRecord::Base
has_many :children
end
class Child < ActiveRecord::Base
belongs_to :parent
end
我已经嵌套了这样的路线
resources :parents do
resources :children
end
当我运行 rake routes 命令时,我得到了这个:
parent_children GET /parents/:parent_id/children(.:format) children#index
POST /parents/:parent_id/children(.:format) children#create
new_parent_child GET /parents/:parent_id/children/new(.:format) children#new
edit_parent_child GET /parents/:parent_id/children/:id/edit(.:format) children#edit
parent_child GET /parents/:parent_id/children/:id(.:format) children#show
PATCH /parents/:parent_id/children/:id(.:format) children#update
PUT /parents/:parent_id/children/:id(.:format) children#update
DELETE /parents/:parent_id/children/:id(.:format) children#destroy
parents GET /parents(.:format) parents#index
POST /parents(.:format) parents#create
new_parent GET /parents/new(.:format) parents#new
edit_parent GET /parents/:id/edit(.:format) parents#edit
parent GET /parents/:id(.:format) parents#show
PATCH /parents/:id(.:format) parents#update
PUT /parents/:id(.:format) parents#update
DELETE /parents/:id(.:format) parents#destroy
请注意,parent_controller中的 params [:id] 与childrens_controller中的不同。有这么好的理由吗?它应该不只是 params [:parent_id] 和 params [:child_id] ?
目前,我无法从一个控制器链接到另一个控制器,而不会引发异常:
No route matches {:action=>"new", :controller=>"parents", :id=>"3"} missing required keys: [:parent_id]
我确实理解了这条错误消息,而且我找到了一个不太好的黑客来解决它。但你怎么解决这个问题呢?我在这里完全遗漏了什么吗?
编辑:
链接是从父级#show 到儿童#new ,看起来像这样:
link_to 'new child', new_parent_child_path
答案 0 :(得分:1)
<%= link_to 'new child', new_parent_child_path(@parent) %>
其中@parent
是父对象。
是不适合你的?
我不知道怎么做,但我认为你是以某种方式传递:id
而不是:parent_id
。