如何在资源上命名路由?
如果我有一个带有单个动作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_path
或homes_url
。
更新 :
您可能更喜欢resource :home, only: :show
哪个将具有home_path
或home_url
的命名路由。 访问家庭资源(单数)的路径也是/home
而家庭资源(复数)索引是/homes
。
可以使用带轨道路由的单一名称控制器。 尝试使用:
resource :home, :controller => 'home'