Перезапись URL перед проверкой маршрута Rails - PullRequest
0 голосов
/ 11 января 2020

Я настраиваю свои маршруты с шаблоном типа 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 или чего-либо еще) перед маршрутизацией процесс начинается?

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