Rails 3.1 has_one嵌套资源:路由不生成“所有”路径

我有一个has_one关系:

# supplier.rb has_one :presentation ... # presentation.rb belongs_to :supplier ... 

以及它们的以下嵌套路由:

 # routes.rb resources :suppliers do resource :presentation end 

运行rake routes给出:

  supplier_presentation POST ... {:action=>"create", :controller=>"presentations"} new_supplier_presentation GET ... {:action=>"new", :controller=>"presentations"} edit_supplier_presentation GET ... {:action=>"edit", :controller=>"presentations"} GET ... {:action=>"show", :controller=>"presentations"} PUT ... {:action=>"update", :controller=>"presentations"} DELETE ... {:action=>"destroy", :controller=>"presentations"} 

为什么show_helper没有show动作?

我可以覆盖问题,例如:

 resources :suppliers do resource :presentation, :except => :show do get "" => "presentations#show", as: "presentation" end end 

给出路线:

 presentation_supplier_presentation GET ... {:controller=>"presentations", :action=>"show"} 

但我们现在都不是处理它的正确方法..

有什么建议?

(编辑)的

 supplier_presentation_path(@supplier) 

确实有效,但为什么? …在我的shell上执行rake routes时不会出现…

我真的不知道为什么当你做rake routes时它没有显示但是你是否尝试使用你的代码来执行supplier_presentation_path(@supplier) ? 它应该根据您的路线工作。

它永远不会对你有用。 试试这个:

 link_to "Presentation", [@suplier, @presentation] 

要么

 link_to "Presentation", suplier_presentation_path(@suplier, @presentation)