Печать в ERB без <% =? - PullRequest
       7

Печать в ERB без <% =?

27 голосов
/ 15 ноября 2009

Иногда удобнее печатать в <%%>. Как это сделать в Rails?

Ответы [ 3 ]

44 голосов
/ 15 ноября 2009

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-concat

Должно быть то, что вы ищете.

например. следующее утверждение, используя concat:

<% concat "Output" %>

эквивалентно:

<%= "Output" %>
7 голосов
/ 15 ноября 2009

в ERB: <%%> Означает, что здесь есть код Ruby для интерпретации. <% =%> Говорит, что выведите код ruby, т.е. отобразите / распечатайте результат.

Так что, кажется, вам нужно использовать дополнительный знак =, если вы хотите вывести в стандартный файл ERB.

В противном случае, вы можете посмотреть на альтернативы ERB, которые требуют меньше синтаксиса, возможно, попробовать что-то вроде HAML. http://haml -lang.com / tutorial.html

Example:

# ERB
<strong><%= item.title %></strong>

# HAML
%strong= item.title

Это удобнее?

4 голосов
/ 15 ноября 2009

erb имеет два метода для вычисления встроенных выражений ruby. <%, который оценивает выражение, и <%=, который оценивает и печатает. В контексте привязки отсутствует глобальный объект для печати.

Как упоминал Омар, существует метод concat , который является частью ActionView. Это будет делать то, что вы хотите.

В отличие от экранирования языка сценариев, для erb нет вывода по умолчанию. Поскольку erb является просто функцией, а шаблон и привязка возвращают переменную, он возвращает значения текста и функций рекурсивно.

Существует горячая дискуссия о том, сколько логики должно быть разрешено в представлении, но как можно меньше - то, к чему стремится большинство людей. Если вы добавляете больше кода, чем текста, вы можете рассмотреть возможность рефакторинга вашего кода.

...