Заранее извините за длину вопроса, но я хотел бы обобщить свои знания до этого момента и попытаться быстрее найти правильное решение.
У меня есть приложение, которое иногда будет встроено в другоестраница интернета.Чтобы упростить объяснение, представьте себе один сервер, который обслуживает обычное приложение или версию приложения для встраивания, в зависимости от имени домена.
Для последнего домена ссылки, которые приложение генерирует с помощью link_to, product_url, image_tag и т. д. должны быть абсолютными (http://servername/images/image_01.jpg
), а для первых они должны быть относительными (я думаю, если я не могу решить эту проблему элегантно).
Я знаю, что яможет генерировать абсолютные URL, используя, например, product_url(:id, [...], :host => request.host, :port => request.port)
, но я вижу две проблемы с этим подходом.Во-первых, кажется неэффективным переписывать этот код в каждом запросе ссылки в каждом представлении.Во-вторых, когда приложение работает само по себе, а не встраивается, я бы предпочел иметь относительные URL-адреса для эффективности и рекомендаций.
Для статических ресурсов можно сделать следующее в config / средах / где угодно.rb: config.action_controller.asset_host = "http://assets.example.com"
Но это не влияет на ссылки, сгенерированные Rails.
Я искал ответ на этот вопрос в течение нескольких дней, и у меня нет ничего текущего для Rails3. Здесь есть старый фрагмент кода, который делает трюк для Rails 2:
http://opensoul.org/2009/2/21/force-absolute-urls
Но, похоже, он не работает для Rails 3. Так ...
- Должен ли я сделать какую-нибудь вспомогательную функцию, которая определяет, будут ли вставляться ссылки?
- Патч url_for, чтобы он работал так, как я хочу, без изменений представления приложения?
- Переписать все мои файлы просмотра в любом случае?
Заранее спасибо за любые ответы.
Приветствия,
Зев