Rails 3.1 HAML слишком много избегает в чанке `: escaped`, как им управлять, чтобы он выходил только из амперсандов? - PullRequest
0 голосов
/ 25 января 2012

У меня есть кусок кода, предоставленный Wistia для вставки видео на страницу.Этот источник является встраиваемым необработанным html и включает в себя некоторые амперсанды.Конечно, мой валидатор w3c кричит на меня весь день, и с этими словами я получаю сотни ошибок вроде: & did not start a character reference. (& probably should have been escaped as &.)

Мой взгляд в HAML, поэтому я предполагаю, что мне нужно было избежатьпоследовательность, которую я с радостью выполнил:

:escape
  <object width="...

После этого видео больше не загружается, поскольку оно сбежало со всей строки с помощью &lt;object width=&quot; ... etc.

Как правильно выбратьсятакие последовательности программно против ручного изменения вставленной строки каждый раз, когда в Rails 3.1 производится новое обновление с HAML?

1 Ответ

0 голосов
/ 25 января 2012

Возможно, вы захотите поместить свой HTML в его собственный фрагмент, затем отобразить его в строку и сделать String#gsub для него.

Поместите ваш Wistia HTML в часть, называемую чем-то вроде app / views / shared / _wistia.html

Затем создайте помощника, который будет выглядеть так:

def embed_video(partial)
  html = render_to_string(:partial => "shared/#{partial}")
  html.gsub '&', '&amp;'
end

А в вашем HAML просто поместите = embed_video 'wistia' туда, куда вы хотите вставить видео.

...