Вызов ERB без Rails: неопределенный метод 'raw' - PullRequest
6 голосов
/ 31 октября 2011

Я использую ERB engine для создания автономной HTML-версии страницы моего сайта Rails.Страница показывает отлично, когда она показывается Rails, но у меня проблемы с генерацией с помощью ERB самостоятельно (несмотря на использование того же шаблона ERB).

Сначала я получил ошибку undefined method 't' и решил ее, заменив все <%=t(...)%> звонки с <%=I18n.translate(...)%>.

Теперь я получаю undefined method 'raw'.Должен ли я заменить все звонки <%=raw(...)%> чем-то другим?Если да, то что?

Ответы [ 2 ]

6 голосов
/ 31 октября 2011

raw определяется как помощник в библиотеке actionpack / action_view, поэтому без рельсов вы не сможете его использовать. Но шаблонизатор ERB показывает свои выходные данные без экранирования:

require 'erb'
@person_name = "<script>name</script>"
ERB.new("<%= @person_name %>").result # => "<script>name</script>" 

И из-за этого для спасения существует ERB::Util#html_escape метод

include ERB::Util
ERB.new("<%= h @person_name %>").result # => "&lt;script&gt;name&lt;/script&gt;" 
0 голосов
/ 05 сентября 2018

Хотя ответ @warhog будет работать, include не обязателен.Он добавляет все методы ERB :: Util в текущий класс, что обычно нежелательно и может вызвать неожиданные побочные эффекты (например, если у вас был другой метод h).Вместо этого просто получите доступ к методу h (или другим помощникам), используя класс ERB :: Util:

ERB.new("<%= ERB::Util.h @person_name %>").result

...