Я настраиваю свои маршруты с шаблоном типа https://example.com/:blog_id/:post_id
. Что я хотел бы сделать, это по желанию, а иногда и заполнить blog_id
на основе некоторых внешних заголовков HTTP-запросов, таких как заголовок Host
в сочетании со страной. Мне нужно было бы также просмотреть базу данных, предпочтительно с использованием Active Record, так что это не то, что я могу сделать в промежуточном программном обеспечении Rack.
Есть ли способ обернуть все маршруты каким-нибудь методом переписывания, например
def rewriter(url)
...
return new_url
end
Rails.application.routes.draw do
scoped_with_rewriter :rewriter do
...
end
end
Пример:
У меня есть следующий маршрут:
get '/:blog_id/:post_id', to: 'posts#show'
, который будет отлично работать на example.com/super-blog/awesome-post
.
Я хотел бы написать оболочку и обслуживать свой сайт на superblog.example.com
или любом другом домене (не только поддомене). В этом случае посещаемый URL станет superblog.example.com/awesome-post
. Я не хочу менять маршруты, потому что обе формы действительны - есть ли способ изменить часть пути URL с /awesome-post
на /super-blog/awesome-post
программно (на основе заголовка Host
или чего-либо еще) перед маршрутизацией процесс начинается?