Как можно НЕ html_encode переменную в рельсах? - PullRequest
5 голосов
/ 30 марта 2010

С Rails, если у меня есть переменная с содержимым HTML, как мне вывести ее без кода в моем файле просмотра?

Этот код, например:

<% my_variable = "<b>Some Bolded Text</b>" %>
<%= my_variable %>

Выходы:

&lt;b&gt;Some Bolded Text&lt;/b&gt;

Ответы [ 2 ]

8 голосов
/ 30 марта 2010

Вы используете Rails 3 Beta? Rails 2 по умолчанию не выводит HTML из вашего вывода, обычно вы должны использовать помощник h, см. Пост Нейта. Если вы используете Rails 3, вам нужно либо использовать помощник raw, либо установить строку как безопасную HTML. Примеры

<% my_variable = "<b>Some Bolded Text</b>" %>
<%= raw my_variable %>

Или

<% my_variable = "<b>Some Bolded Text</b>".html_safe %>
<%= my_variable %>   

Проверьте вашу версию Rails и вернитесь к нам.

0 голосов
/ 30 марта 2010

ActionView :: Helpers :: TextHelper предоставляет метод strip_tags, который вместо простого удаления тегов удаляет их полностью.

источник [ссылка]:

 def strip_tags(html)     
    return html if html.blank?
    if html.index("<")
      text = ""
      tokenizer = HTML::Tokenizer.new(html)
      while token = tokenizer.next
        node = HTML::Node.parse(nil, 0, 0, token, false)
        # result is only the content of any Text nodes
        text << node.to_s if node.class == HTML::Text  
      end
      # strip any comments, and if they have a newline at the end (ie. line with
      # only a comment) strip that too
      text.gsub(/<!--(.*?)-->[\n]?/m, "") 
    else
      html # already plain text
    end 
  end

<%= strip_tags(my_variable) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...