Ruby on Rails: фиксация этого маршрута для показа 404

Я работаю над созданием нового контроллера/маршрута, чтобы только позволить HTTP, ДОБИРАЮТСЯ и HTTP POST. URL должен быть к / нечто. Естественно мой маршрут похож на следующее:

map.connect 'foo',
  :conditions => { :method => :get },
  :controller => "foo",
  :action => "display_something"

map.connect 'foo',
  :conditions => { :method => :post },
  :controller => "foo",
  :action => "register_foo"

Часть этого, что я не понимаю, - то, что движение к http://example/foo/1 поднимает 'Неизвестное действие'. Я не хочу, чтобы/foo/N был доступен. Это должно дать пользователю 404 вместо того, чтобы бросить ActionController:: UnknownAction.

Рассмотрение ближе RouteSet возражает, что у нас есть следующее:

>> rs.recognize_path "/foo/1"
=> {:controller=>"foo", :action=>"1"}

Таким образом, это находит маршрут, и вот почему у нас нет 404.

Я должен бездельничать с method_missing в ApplicationController для броска 404 каждый раз, когда метод действия отсутствует? Я просто хочу, чтобы 404 были брошены, если нет никакого действия. В моем приложении/foo/N не имеет смысла, и я не хочу смущать пользователя.

1
задан randombits 16 July 2010 в 16:38
поделиться

1 ответ

При просмотре документации API для ActionController :: Rescue выясняется, что ответ восстановления для ActionController :: UnknownAction по умолчанию равен => : not_found . Я считаю, что в производственном режиме это должно отобразить 404. Попробуйте запустить свое приложение в производственном режиме и посмотрите, как оно отреагирует (или вы должны просто увидеть код возврата HTTP в журнале.

2
ответ дан 2 September 2019 в 23:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: