2012-10-05 180 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 

,因爲軌道路線先到先得