如何在资源上命名路由?

如果我有一个带有单个动作index的控制器Home ,我知道我可以写:

 get 'home' => 'home#index" 

我将自动拥有命名路径home_path

但如果我这样定义它:

 resources :home, only: :index 

我得到了路线home_index_path 。 为什么这样,如果我使用resources约定,如何创建命名路由home_path

Rails为routes文件中的所有资源定义了标准命名约定。 请参阅资源路由的Rails指南 。

您还可以运行bundle exec rake routes以查看您在应用程序中定义的路由的名称。

在您的示例中, resources :home, only: :index"homes#index"操作的命名路由是homes_pathhomes_url

更新

您可能更喜欢resource :home, only: :show哪个将具有home_pathhome_url的命名路由。 访问家庭资源(单数)的路径也是/home而家庭资源(复数)索引是/homes

可以使用带轨道路由的单一名称控制器。 尝试使用:

 resource :home, :controller => 'home'