Подтвердить что ты не робот

Как я могу создать маршрут Rails 3, который будет соответствовать всем запросам и напрямую на один ресурс/страницу?

У меня есть приложение rails (Rails 3.0), которое мне нужно временно вывести из строя. Пока это действует, я хочу создать новый маршрут, который будет направлять все запросы на один кусок статического контента. У меня есть контроллер, настроенный для обслуживания моих статических страниц.

Я пробовал что-то вроде этого:

match '*' => 'content#holding'

и

match '*/*' => 'content#holding'

чтобы соответствовать шаблону подстановочного знака, как описано здесь: Rails 3 маршрутизации globbing без успеха.

Это, вероятно, очень простой ответ, но я не мог понять.

/EDIT/ Забыл упомянуть, что у меня было это правило в самом верху моего файла route.rb.

4b9b3361

Ответ 1

Rails необходимо связать параметры url с переменной, попробуйте следующее:

match '*foo' => 'content#holding'

Если вы также хотите сопоставить /, используйте скобки, чтобы указать, что foo является необязательным:

match '(*foo)' => 'content#holding'

Ответ 2

Я сделал это только вчера и первым придумал решение, которое показывает klochner. То, что мне не понравилось в этом, заключается в том, что все, что вы входите в URL-адрес, остается там после загрузки страницы, и поскольку я хотел, чтобы весь маршрут переадресовывался на мой root_url, это было не очень привлекательно.

Что я придумал, выглядит так:

# in routes.rb
get '*ignore_me' => 'site#unknown_url'

# in SiteController
def unknown_url
  redirect_to root_url
end

Не забудьте вставить запись маршрутов в самую нижнюю часть файла!

EDIT: Как заметил Ник, вы также можете сделать перенаправление непосредственно в файле маршрутов.

Ответ 4

Я столкнулся с чем-то вроде этого, где у меня были имена доменов в качестве параметра в моем маршруте:

match '/:domain_name/', :to => 'sitedetails#index', :domain_name => /.*/, :as =>'sitedetails'

Ключ к этому был /.*/, который был подстановочным значком для почти всего. Так что, возможно, вы могли бы сделать что-то вроде:

match '/:path/', :to => 'content#holding', :path=> /.*/, :as =>'whatever_you_want'