Есть несколько возможностей.Вот одинВы можете добавить это к bottom вашего rout.rb:
match ':not_found' => 'my_controller#index',
:constraints => { :not_found => /.*/ }
, который установит универсальный маршрут, чтобы действие индекса MyController обрабатывало любые пропущенные пути;он может обнаружить их, взглянув на params[:not_found]
и выполнив все, что захочет, например, перенаправление на root_path (redirect_to root_url
), стратегическое перенаправление куда-то на основе неверного пути, рендеринг чего-то особенного, поиск реферера / реферера для подсказок оисточник и т. д.
Опция :constraints
необходима;в противном случае параметр not_found
не сможет содержать специальные символы, такие как косые черты и точки.
Поместите это в конец ваших маршрутов, потому что, очевидно, оно будет соответствовать всем, и вы хотите дать другиммаршруты сначала ломаются на пути.
Если вы хотите только перенаправить, ничего больше, вы можете сделать это вместо этого (опять же, в bottom ):
match ':not_found' => redirect('/'), :constraints => { :not_found => /.*/ }