Я пытаюсь добавить пользовательское действие ('last_five') в контроллер.
Мои маршруты указаны как:
people_last_five GET /people/last_five(.:format) {:action=>"last_five", :controller=>"people"}
(т.е. это вывод rake_routes).
Но когда я перехожу к / people / last_five, я получаю следующую ошибку.
Запущено GET "/ people / last_five" для XXX.XX.XXX.XXX в ВС 15 мая 22:03:18 +0000 2011
Обработка PeopleController # last_five как HTML
Пользовательская нагрузка (1,4 мс) ^ [[0 м SELECT users
. * ОТ users
ГДЕ users
. id
= 3 ПРЕДЕЛ 1
Завершено в 86мс
ActiveRecord :: RecordNotFound (Не удалось найти человека без идентификатора):
Я думал, что это проблема в моих маршрутах. Rb
В моем route.rb у меня сейчас есть:
get 'people/last_five'
resources :people
Я тоже пробовал
resources :people do
get 'last_five', :on => collection
end
но это дает те же результаты.
Почему рельсы пытаются получить ID, если в маршруте нет "/: id /"?
Это даже происходит, когда я указываю маршрут как '/ people /: id / last_five' и передаю ему фиктивный идентификатор. В этом случае он все еще говорит мне ActiveRecord :: RecordNotFound (Не удалось найти человека без идентификатора).
У меня есть эта проблема, даже когда я сокращаю само действие до заглушки для отладки, так что я не думаю, что это проблема. В моем контроллере:
# GET /people/last_five
def last_five
logger.info "LAST FIVE IS BEING CALLED"
#@people = Person.last_five
#respond_with @people do |format|
# format.json { render :json => @people }
#end
end
Есть идеи, что здесь происходит? Похоже, что rails говорят получить идентификатор от чего-то за пределами маршрутов. Я посмотрел везде, где я могу думать.
Любые выводы высоко ценятся.
Спасибо.
EDIT:
Мой PeopleController начинается так:
before_filter :authenticate_user!, :except => []
filter_resource_access
respond_to :html, :js, :json