Отображение хранимого HTML-кода в Rails 3 - PullRequest
1 голос
/ 21 декабря 2010

Я застрял на проблеме, и мне нужна помощь, чтобы обойти ее.

Я занимаюсь разработкой приложения на Rails 3, которое позволит пользователям взаимодействовать с нашим поставщиком услуг электронной почты через службы SOAP. Пользователи смогут загружать полные файлы HTML, которые будут храниться в базе данных приложения (MySQL). Я пытаюсь создать представление, которое предоставит пользователю предварительный просмотр содержимого HTML, сохраненного в базе данных.

Чаще всего в документах HTML к фону применяется какой-то стиль (например, <body bgcolor="#e5e5e5"> или <div style="background:#e5e5e5;"> или оба. Этот стиль применяется ко всей странице. Я застрял при создании Контейнер для встроенного HTML, который будет ограничивать эти стили. Я думал <iframe>, но, похоже, ему нужен атрибут src , но источником моего HTML является база данных. Любые идеи, как мне это сделать

Вот код просмотра, который у меня есть:

<p>Content for: <%= @doc.file_name %> </p>

<div>
  <%= render :inline => @doc.content %>
</div>

Вот исходный код отображаемой HTML-страницы, если это поможет вам визуализировать то, что я делаю:

<!DOCTYPE html>
<html>
<head>
  <title>ListTool</title>
<meta name="csrf-param" content="authenticity_token"/>
<meta name="csrf-token" content="W7AoMYkiW8gDdKYDNB/NemCY/mRz+JeNadb3pexhaIo="/>
</head>
<body>

<p>Content for: HJ4151.html </p>

<div>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html><head><meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">

<title>The Bankers&rsquo; Black Book of High-Yield Dividend Plays
</title>

</head>



<body marginheight="0" marginwidth="0" topmargin="0"
bgcolor="#e5e5e5">

<div style="width:100%; background:#e5e5e5; margin:0; padding:0;">

_irrelevant HTML code here_
</div>
</body>
</html>
</div>

</body>
</html>

1 Ответ

2 голосов
/ 21 декабря 2010

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

<%= render :inline => @doc.content %>

Контроллер должен получить параметр id из URL и загрузить правильный объект. Затем измените существующий шаблон на что-то вроде этого:

<p>Content for: <%= @doc.file_name %> </p>

<iframe src="/docviewer/<%= @doc.id %>">
</iframe>

Я понятия не имею, правильный ли это синтаксис для Rails 3, но, надеюсь, вы поняли идею.

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