Вопрос

Я использую Maruku с моим приложением ROR3. Но проблема в том, что когда я использую h(text) Способ избежать текста из базы данных, прежде чем использовать Maruku, он убегает > к > Так что Маруку не увидит это как блокировку.

Но я все еще хочу избежать остальной части текста, поэтому мой вопрос в том, как я могу сделать эту работу?

Я не хочу отключить убежище, но я не хочу, чтобы это сбежать >

Это было полезно?

Решение

Следующий метод принимает HTML_ENCODED MULTILINE STRINGS и заменяет все элементы блокировки Maruku, которые были преобразованы в коды сущностей HTML обратно в>

В целях этой реализации линия блокировки Maruku определяется как строка, начиная с одной или нескольких> последовательностей, разделенных дополнительным пробелом.

def maruku_escape(text)
  text.gsub(/^([\s]*\>)+/) {|match| match.gsub(/\>/, '>')}
end

Использовалась следующая тестовая строка

test_text = "<b>A bold tag</b>
<span>Some text in a span</span>

Some Markdown
> Blockquote 1
  > > nested blockquote 1
  > > nested blockquote 2
  >> nested blockquote 3 with no spaces


Some plain text with an invalid blockquote > Some blockquote text
<i>The end in italics<i>"

И используя это следующим образом maruku_text = maruku_escape(ERB::Util.html_escape(test_text))

Дал следующие результаты

result =  "&lt;b&gt;A bold tag&lt;/b&gt;
&lt;span&gt;Some text in a span&lt;/span&gt;

Some Markdown
> Blockquote 1
  > > nested blockquote 1
  > > nested blockquote 2
  >> nested blockquote 3 with no spaces


Some plain text with an invalid blockquote &gt; Some blockquote text
&lt;i&gt;The end in italics&lt;i&gt;
"

Другие советы

Rails 3 выходит из всех строк по умолчанию. Отказ Вам нужно отметить их как безопасную, используя «que_string.html_safe» или использовать <% = RAW WEMPLE_STRING%> в шаблоне, если вы хотите избежать этого.

Если вы настроиете дезинфицировать хелпер Чтобы допустить теги HTML, которые вы хотите пройти, вы можете сделать что-то подобное:

<%= sanitize(@maruku_content.to_html) %>

Sanitize будет выкрашивать ваш контент и отметьте вывод как HTML_SAFE, оставив желаемые теги Intact. Эта опция обсуждается в документах плагинов Rails_XSS здесь. Отказ Пример, который они используют для текстиля.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top