Ruby on rails 为什么rails在多个位置创建具有相同参数的嵌套资源路由?

Ruby on rails 为什么rails在多个位置创建具有相同参数的嵌套资源路由?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有一个模型家长,其中有许多孩子,孩子属于一个家长 class Parent < ActiveRecord::Base has_many :children end class Child < ActiveRecord::Base belongs_to :parent end 当我运行rake routes命令时,我得到以下结果: parent_children GET /parents/:parent_id/children(.:format)

我有一个模型家长,其中有许多孩子,孩子属于一个家长

class Parent < ActiveRecord::Base
  has_many :children
end
class Child < ActiveRecord::Base
  belongs_to :parent
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
请注意,parents\u控制器中的参数[:id]与childrens\u控制器中的不同。有什么好的理由吗?它是否应该不仅仅是参数[:parent\u id]参数[:child\u id]

目前,我无法从一个控制器链接到另一个控制器,除非引发异常:

No route matches {:action=>"new", :controller=>"parents", :id=>"3"} missing required keys: [:parent_id]
我确实理解这个错误消息,我发现了一个不太好的破解方法来绕过它。但是你怎么解决这个问题呢?我完全错过了什么吗

编辑:

链接是从家长#秀孩子#新的,如下所示:

link_to 'new child', new_parent_child_path

其中
@parent
是父对象

这对你不管用吗


我不知道如何传递,但我认为您传递的是
:id
,而不是
:parent\u id

为什么需要链接控制器?我的意思是从一个控制器中的视图链接到另一个控制器中的视图。在本例中,它是从父对象“向子对象显示”新建的。您是否可以包括尝试创建链接所用的代码?这一点很有效,
。谢谢是的,添加.id确实是不必要的。我改变了答案。
link_to 'new child', new_parent_child_path
<%= link_to 'new child', new_parent_child_path(@parent) %>