Нигде не могу найти, кроме проекта, над которым работаю. Это не работает так же, как <%= (я пытался изменить), но я не могу понять разницу.

<span class="option-content" placeholder="<%=t('pages.edit.option')%>">
  <%%= content %>
</span>
2
Simoroshka 8 Ноя 2016 в 15:36

2 ответа

Лучший ответ

Короче говоря, ERb преобразует двойные процентные оценки в однопроцентные.


Похоже, вы используете один уровень шаблонов ERb для создания другого уровня шаблонов ERb.

Первому уровню ERb не нужна переменная с именем content, только метод t:

<span class="option-content" placeholder="<%=t('pages.edit.option')%>">
  <%%= content %>
</span>

Этот первый слой визуализируется для создания второго слоя:

<span class="option-content" placeholder="Edit">
  <%= content %>
</span>

Как видите, это тоже шаблон ERb. Я ожидаю, что что-то еще позже возьмет этот второй ERb и использует его для рендеринга чего-то вроде:

<span class="option-content" placeholder="Edit">
  Hello, world.
</span>
2
RJHunter 8 Ноя 2016 в 13:08

Док-станция ERB, здесь, сообщает

<% Ruby code -- inline with output %>
<%= Ruby expression -- replace with result %>
<%# comment -- ignored -- useful in testing %>
% a line of Ruby code -- treated as <% line %> (optional -- see ERB.new)
%% replaced with % if first thing on a line and % processing is used
<%% or %%> -- replace with <% or %> respectively

Это означает

<%%= content %>

Будет заменен на

<%= value of content %>
4
Deepak Mahakale 8 Ноя 2016 в 12:48