ERB String интерполяция, генерирующая неправильный синтаксис HTML - PullRequest
0 голосов
/ 31 октября 2018

У меня есть эти строки в представлении:

<%
  if current_user.is_fav?(a)
    cls = "product fav"
  else
    cls = "product"
  end
%>

и позже

<div class=<%= cls %> >

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

<div class="product" fav>

РЕДАКТИРОВАТЬ: как говорится в ответе, это НЕ произвело это, это был браузер "осмотреть", который показал это мне.

Я могу обойти это, но почему не работает приведенный выше код?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

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

<div class="product" fav>

Нет, это не так. Это производит <div class=product fav>. То, что вы видите (через что-то вроде «проверить элемент», правильно?) - это браузер, пытающийся интерпретировать вашу сломанную разметку как можно ближе к спецификации html.

Как отмечалось в других ответах, вместо этого вы должны сделать что-то вроде этого:

<div class="<%= cls %>">
0 голосов
/ 31 октября 2018
<div class=<%= cls %> >

должно быть

<div class="<%= cls %>">

Вы подставляете строку в заполнитель erb, но базовый шаблон не указывает, что сам заполнитель является строкой. ERB, вероятно, делает все возможное для исправления, но, очевидно, не в состоянии справиться с этим. Редактировать: Серхио отметил, что, скорее всего, это делает браузер, а не ERB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...