2012-10-05 175 views
1

我有一个奇怪的问题。 我正在用脚手架来创建CRUD和东西。 然后我添加了一个叫做cnt的函数,它应该给我表格条目的数量。 例如Album.count为密码。 但今天早上,整个路由指向该页面。 当我试图访问xxx /要素 我被链接了do/cntalbums。Rails 3路由

看起来像一个路由的事情 - 这是我的routes.rb:

Something::Application.routes.draw do 
    resources :albums 
    get "home/index" 
    resources :elements 
    root :to => 'home#index' 
end 

这就是全部。 我删除了cnt的视图,我删除了在albums_controller中定位的方法。 因此,没有任何剩余的地方,其中cnt被执行。 但是,似乎每个GET链接都到该页面。 我得到这个在我的日志:

Started GET "/albums" for xxxx at Fri Oct 05 09:54:42 +0200 2012 
Processing by AlbumsController#cnt as HTML 
Parameters: {"cntalbums"=>"albums"} 
Completed 500 Internal Server Error in 47ms 

ActionView::MissingTemplate (Missing template albums/cnt, application/cnt with {:formats=>[:html], :locale=>[:en], :handlers=>[:erb, :builder]}. Searched in: 
* "/kunden/nnax.de/webseiten/entwicklung/poezy/app/views" 
): 
app/controllers/albums_controller.rb:18:in `cnt' 

我:

match ':cntalbums' => 'albums#cnt', :as => 'cnt_albums', :via => :get 

之前;但我已经删除了。 所以我没有任何线索,为什么我看不到我的专辑,元素等等。 最后:耙路线给我说:

albums GET /albums(.:format)   albums#index 
     POST /albums(.:format)   albums#create 
new_album GET /albums/new(.:format)  albums#new 
edit_album GET /albums/:id/edit(.:format) albums#edit 
    album GET /albums/:id(.:format)  albums#show 
     PUT /albums/:id(.:format)  albums#update 
     DELETE /albums/:id(.:format)  albums#destroy 
elements GET /elements(.:format)   elements#index 
     POST /elements(.:format)   elements#create 
new_element GET /elements/new(.:format)  elements#new 
edit_element GET /elements/:id/edit(.:format) elements#edit 
    element GET /elements/:id(.:format)  elements#show 
     PUT /elements/:id(.:format)  elements#update 
     DELETE /elements/:id(.:format)  elements#destroy 
    home_index GET /home/index(.:format)  home#index 
    root  /       home#index 

所以我的理解很明显;我想去专辑或元素,它进入拟合控制器的功能。 但它总是试图达到AlbumsController#CNT

虽然该功能甚至不存在了

任何提示? :/

回答

0

Rails路由是先到先得的,所以如果CNT规则高于一切,Rails将路由它。看规则

match ':cntalbums' => 'albums#cnt', :as => 'cnt_albums', :via => :get 

注意任何URL都会与此匹配。路径/hello/world将导致:cntalbums => "hello/world"

如果您从路由中删除了该行,但仍然被它路由,您确定已重新启动Rails服务器吗? (甚至尝试清除浏览器的缓存,但真的不应该成为问题)

+0

是的它就像我的供应商,重新启动服务器;现在它再次工作... 起初我试图 匹配'albums/cnt'=>'相册#cnt' 但是,这导致了我的控制器的思想,该cnt是一个ID 他想用“显示“功能出于任何原因。 我怎么解决这个问题? – user1697061

0

试试这个

Something::Application.routes.draw do 
resources :albums 
... 
match ':cntalbums' => 'albums#cnt', :as => 'cnt_albums', :via => :get 
... 
get "home/index" 
resources :elements 
root :to => 'home#index' 
end 

,因为轨道路线先到先得