2010-06-28 5 views
1

Я поставил эту строку в моем routes.db файл:Как исправить эту ошибку маршрутизации в Ruby on Rails?

map.mything '/mything', :controller => 'mything', :action => 'list' 

Но я получаю эту ошибку, когда я иду в http://localhost:3000/mything, я получаю эту ошибку:

Unknown action 
No action responded to index. Actions: list 

Почему пытается использовать индекс вместо списка? Я думал, что, установив

:action => 'list' 

он использовал бы действие списка? Спасибо за прочтение.

+1

Вы должны указать именованные маршруты над маршрутами по умолчанию. Я помещаю названные маршруты, подобные этим, наверху route.rb, поэтому они всегда получают оценку сначала. –

+0

@ Jim это сработало, спасибо! Если вы отправите ответ, я пометю его как правильно. – ben

+0

ben: thanks, я также предоставил код для других с той же проблемой. –

ответ

1

Вы должны поставить именованные маршруты над маршрутами по умолчанию.

Я поместил названные маршруты, подобные этим в верхней части routes.rb, чтобы они всегда оценивались в первую очередь.

ActionController::Routing::Routes.draw do |map| 
    map.about 'about', :controller => 'home', :action => 'about' 
    map.contact 'contact', :controller => 'home', :action => 'contact' 

    # MORE CONFIG 

    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 
end 
0

Извините, что задал потенциально очевидный вопрос, но вы попробовали перезапустить приложение? Определенные маршруты не будут регистрироваться до перезапуска приложения (ресурсам RESTful никогда не потребуется перезапуск приложения, но другие часто делают).

+0

Не пробовал это, просто сделал и до сих пор получил ошибку. – ben

1

Соглашаясь с Джимом Шубертом, поместите именованные маршруты выше маршрутов по умолчанию.

Другая вероятная проблема заключается в том, что у вас есть что-то вроде:

map.resources :mything

ставящее действие индекса на контроллере в результате вас подмости модели,

Смежные вопросы