2012-10-05 3 views
1

У меня есть странная проблема. Я использовал рельсы с эшафотом, чтобы создать CRUD и прочее. Затем я добавил функцию cnt, которая должна дать мне количество записей в таблице. Например Albums.count для шифрования. Но сегодня утром вся маршрутизация направлялась на эту страницу. Когда я попытался посетить xxx/элементы Я был связан do/cntalbums.Rails 3 routing

Посмотрел как маршрутизации вещь - это мой routes.rb:

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

Это все. Я удалил представление cnt, я удалил метод, который был найден в альбомах_controller. Итак, нет пятна friggn слева, где 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

Да, это было похоже на моего провайдера, который перезапустить сервер; теперь он снова работает ... Сначала я пытался совпадение 'альбомы/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 

, потому что рельсы маршрутов первый пришел первый обслужен