(рельсы) брать из БД и рендерить в HTML - PullRequest
0 голосов
/ 29 апреля 2009

Я создаю веб-сайт для своего класса Web Dev и застрял в рендеринге HTML. Я хочу иметь возможность использовать простую форму (почти все, что у меня сейчас есть, это каркас для этого контроллера, и я попытался втиснуть content_type в мой контроллер, но без прогресса.) Для отправки текста и его отображения в виде HTML. Идея состоит в том, что, поскольку этот класс требует кучу дерьма, скопированного из книги в качестве примеров и ссылок на HTML, возможно, я мог бы подать их так же, как посты в блоге. (Все на одной и той же странице, используя один и тот же макет. Единственное, что изменяется, - это div содержимого под списком блогов и списком данных (рассматриваемый контроллер).

Итак, короче говоря, мой вопрос: как получить текст, извлеченный из БД, для отображения HTML-тегов, а не для отображения в виде открытого текста?

Спасибо, и, пожалуйста, дайте мне знать, если необходима дополнительная информация. Cameron

Редактировать: (Добавление кода. Это действительно почти ничего после лесов, но, whatevs.) Кроме того, не уверен, как должен работать инструмент фрагмента кода. Я надеюсь, что это сбрасывается.

 class DatapostsController < ApplicationController</p>

<pre><code>before_filter :header

заголовок def response.headers ['Content-type'] = 'text / html; кодировка = UTF-8' конец

# GET / dataposts # GET /dataposts.xml индекс def @dataposts = Datapost.all @posts = Post.all

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @dataposts }
end

конец

# GET / dataposts / 1 # GET /dataposts/1.xml Def Show @dataposts = Datapost.all @datapost = Datapost.find (params [: id]) @posts = Post.all

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @datapost }
end

конец конец


Это представление, где оно должно быть отображено. Это часть, которая вызывается из content_for, которая вызывается с домашней страницы.

<p>
  <small>Post title</small>
  <%=h @datapost.title %>
</p>
<hr />
<p>
  <%=h @datapost.body %>
</p>
<hr />
<hr />


<%= link_to 'Back', dataposts_path %>

Я пойду вперед и вытолкну то, что у меня есть, на продукт. сервер для идеи того, что я хочу, чтобы функциональность была похожа.

http://www.sanarothe.com (~ 5 минут после редактирования)

1 Ответ

3 голосов
/ 29 апреля 2009

Метод h, который вы вызываете здесь:

<%=h @datapost.body %>

также известен как html_escape - вот соответствующая ссылка в документации . Удалите его, и ваши HTML-теги должны отображаться соответствующим образом.

Вы должны всегда отображать код, полученный от пользователя с помощью метода h, чтобы предотвратить атаки межсайтовых скриптов. Но если это код, который вы вычеркнули из книги (или чего-то еще), все будет в порядке.

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