Ruby on Rails: исправление этого маршрута, чтобы показать 404 - PullRequest
1 голос
/ 16 июля 2010

Я работаю над созданием нового контроллера / маршрута, чтобы разрешить только HTTP GET и HTTP POST.URL должен быть / foo.Естественно, мой маршрут выглядит следующим образом:

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 Ответ

2 голосов
/ 16 июля 2010

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

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