2015-10-27 3 views
1

У меня есть эта переменная в стройной:Как использовать разрывы строк в тонкой переменной?

- foo = 'my \n desired multiline <br/> string' 
#{foo} 

Когда я анализирую вывод, используя slimrb команду командной строки содержимое переменной кодируются:

my \n desired multiline &lt;br/&gt; string 

Как я могу slimrb выводит исходное содержимое для генерации многострочных строк?

Обратите внимание, что ни .html_safe, ни .raw не доступны.

+1

ли вы имеете в виду '= Foo', а не' # {Foo} '? «#» Запустит новый тег. – matt

+0

двойные кавычки @potashin вызывают интерпретацию '\ n', но это не имеет никакого эффекта, так как в HTML новые строки игнорируются. – user569825

+0

@matt Фактическая строка говорит 'td # {foo}'. Изменение этого параметра на 'td = foo' генерирует идентичный вывод. – user569825

ответ

3

Здесь есть две проблемы. Сначала в строках Ruby с использованием одинарных котировок - ' - не конвертировать \n в символы новой строки, они остаются как буквальные \ и n. Вам нужно использовать двойные кавычки. Это относится и к Slim.

Во-вторых, Slim HTML escapes the result of interpolation by default. Чтобы избежать этого, используйте двойные скобки вокруг кода. Slim also HTML escapes Ruby output по умолчанию (с использованием =). Чтобы избежать экранирования в этом случае use double equals (==).

Сочетание этих двух, ваш код будет выглядеть примерно так:

- foo = "my \n desired multiline <br/> string" 
td #{{foo}} 

Это производит:

<td>my 
desired multiline <br/> string</td> 
+0

Оба варианта ('==' и '# {{}}') работают. Спасибо, дюжина, матовый! – user569825

Смежные вопросы