Мне недавно было поручено загрузить часть моего приложения Rails в iframe на другом веб-сайте. На соответствующих страницах должен использоваться другой файл макета, но только если они отображаются внутри iframe. Было предложено решение Detect iframe request in a rails app, в котором используется параметр строки запроса.Rails 3 DRY Условная компоновка для iframes
Например, запрашивающий веб-сайт может вызвать мое приложение через iframe с помощью src http://foo.com/bar?iframe=true
. Тогда в нашем контроллере мы могли бы просто проверить:
def bar
render :template => "iframe" if params[:iframe]
end
Это кажется хорошим решением, но, к сожалению, который работает только для первоначального запроса, как исходная строка запроса полностью статичная. Предполагая, что у нас есть доступные ссылки на другие маршруты в iframe, есть ли способ легко передать параметр запроса iframe=true
для поддержания правильного макета iframe без повторения кода? В принципе, я хотел бы использовать подход DRYest, не нарушая никаких существующих функций. Я подумал о создании еще одного link_to помощника, который включал логику для ретрансляции этого параметра, если он существует, и заменяет все мои вызовы link_to во время моего приложения; Мне было интересно, есть ли у кого-то лучший подход.