В пользовательском действии контроллера Rails 3.1 постоянно запрашивается идентификатор, даже если указан маршрут - PullRequest
0 голосов
/ 16 мая 2011

Я пытаюсь добавить пользовательское действие ('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

Ответы [ 2 ]

0 голосов
/ 16 мая 2011

Вы уверены, что это происходит в контроле, а не в модели?Rails не хочет, чтобы в Control были вещи модели.

0 голосов
/ 16 мая 2011

Согласно обсуждению ваших вопросов, причиной является фильтр «до / вокруг», а не проблема с вашим конкретным действием.Ваше приложение ищет User, поэтому оно может быть связано с аутентификацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...