2010-11-26 3 views
1

У меня есть функция:функция Rails возвращает HTML-имя символов вместо фактического символа

def div 
"<div>blah</div>" 
end 

и в представлении:

<%= div %> 

, но в результате исходный код страницы:

&lt;div&gt;blah&lt;/div&gt; 

вместо фактического текста строки.

Однако консоль отображает правильные метки.

<% logger.info(div) %> 

Выходы в консоли:

<div>blah</div> 

Может кто-нибудь помочь?

ответ

3

Используйте это вместо этого.

<%= raw div %> 

Rails 3 ускользает все исходящее от сервера в представлениях, вы можете использовать raw, если вы уверены, что доверять данным.

+0

См. http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/ для получения дополнительной информации – 2010-11-26 08:47:21

0

Да, в Rails 2 текст был сырым по умолчанию, теперь в Rails 3 они делают наоборот

3

В качестве альтернативы, если вы хотите, чтобы иметь возможность использовать

<%= div %> 

на ваш взгляд, вы можете определите свою функцию следующим образом:

def div 
    "<div>blah</div>".html_safe 
end 
Смежные вопросы