Ruby on Rails: визуализация частичного HTML в виде одной строки - PullRequest
7 голосов
/ 18 ноября 2010

Есть ли способ отобразить частичку html.erb в виде одной строки?

Я пытаюсь отобразить частичку _foo.html.erb внутри javascript, чтобы я мог использовать весьHTML-документ в виде строковой переменной.

Я пробовал следующий код:

var foo = "<%= render :partial => "foo" %>";

И внутри _foo.html.erb, скажем, у меня есть следующее:

<h1>Hello</h1>
<p>World</p>

Этот способ выдаст мне синтаксическую ошибку в javascript, потому что есть CRLF в частичном.Но если я напишу код, подобный ...

<h1>Hello</h1>" +
"<p>World</p>

Теперь, это не ошибка в JavaScript.Я могу сделать последний способ, но это катастрофа, если частичное содержит много строк кода с помощью сценария ruby.

Был бы какой-нибудь альтернативный способ?

Заранее спасибо.

Ответы [ 2 ]

15 голосов
/ 18 ноября 2010

Используйте функцию escape_javascript:

var foo = "<%= escape_javascript(render :partial => 'foo') %>";
1 голос
/ 18 ноября 2010

Быстрый и грязный взлом:

var foo = "<%= render(:partial => "foo").gsub(/[\n\r]/, ' ') %>";

Это просто заменяет символы новой строки пробелами, но не с точки зрения HTML-парсера.

Однако это довольно хрупкий способ создания объектов JavaScript. Вам нужно будет учитывать кавычки в частичном коде, которые сделают ваш JavaScript недействительным, и т. Д. Я бы предложил попробовать создать шаблоны JavaScript для HTML-кода, который вы хотите визуализировать, и заполнить их версиями JSON ваших моделей.

...