2012-06-24 69 views
0

的routes.rb澄清在轨道上收集路线

resources :home do 
get 'download', :on => :collection 
end 

耙路线

download_home_index GET /home/download(.:format)  home#download 
home_index GET    /home(.:format)    home#index 
.... 

home_controller.rb

def index 
end 

当我去http:// localhost:3000/home/download,即使home_controller中没有“下载”动作,它也可以工作。我很困惑,为什么即使没有采取行动,也不会抱怨缺少行动。

我很好奇,所以我说resources :homes到的routes.rb和rake routes给我的以下内容:

homes GET /homes(.:format)    homes#index 

相比之下,它不homes_index而这是之前home_index。有一些铁轨魔术正在进行吗?欣赏一些解释。

回答

0

对于第一个问题,如果您有对该操作的看法,那么您并不严格需要定义的操作(但您确实应该)。

对于第二个问题,您定义了resources :homes vs resources :home,因此生成的路线是不同的。 resources :home不正确。