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) %>