Разное расположение для iframe - PullRequest
4 голосов
/ 03 февраля 2011

У меня есть приложение rails с контентом, к которому другие сайты должны обращаться через iframe.Контент должен иметь разный макет при отображении на веб-сайтах (без строки меню и т. Д.). Я создал новый файл макета с именем iframe.html.erb. Как я могу проверить, вызывается ли страница из внешнего iframe, так что правильный файл макетаиспользуется?

Ответы [ 3 ]

8 голосов
/ 03 февраля 2011

Насколько я знаю, когда вы делаете

<iframe src="www.google.pl"></iframe>

, у вас нет контроля над макетом или стилями отображения страницы в iframe, если вы не владеете страницей и не можете заставить ее выглядеть так, как вам нравится.

EDITED

Если вы отображаете свой собственный сайт, сделайте так:

<iframe src="/some_site_that_i_can_change_code_in?from=iframe"></iframe>

и затем в контроллере some_site_that_i_can_change_code_in:

if params[:from] == "iframe"
  render :layout => "for_iframe"
else
  render :layout => "normal"
end
5 голосов
/ 30 октября 2013

Хороший способ управления определенным макетом и содержимым при обслуживании iframe - это регистрация mime-типа iframe.

## config/initializers/mime_types.rb

Mime::Type.register 'text/html', "iframe"

Создать представление, соответствующее действию контроллера, т.е.: show.iframe.haml. Затем, когда приходит запрос с format: iframe, он будет отображать версию iframe.

Таким образом, вы можете точно контролировать содержимое iframe на других сайтах. Не нужно сходить с ума в контроллере.

0 голосов
/ 21 июля 2011

Я думаю, что единственный способ сделать это с помощью Javascript, а затем перенаправить, но это немного грязно и не очень хорошая идея.См. Эту ветку для получения дополнительной информации: Обнаружение, является ли загрузка iframe или прямой

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