Синтаксическая ошибка, неожиданное '>' при добавлении ERB в идентификатор image_tag - PullRequest
0 голосов
/ 27 марта 2020

В моем приложении есть ситуация, когда мне нужно визуализировать набор изображений с идентификатором элемента в теге идентификатора каждого изображения. Выглядит это так:

<% things.each do |thing| %>
  <%= image_tag "ballerino.png", id: "voteDownAnimation<%= thing.id %>", class: "hidden", style: "position: fixed; z-index: 100; height: 70vh" %>
  <%= image_tag "fist-left.png", id: "voteUpAnimationLeft<%= thing.id %>", class: "hidden", style: "position: fixed; z-index: 100; width: 50%" %>
  <%= image_tag "fist-right.png", id: "voteUpAnimationRight<%= thing.id %>", class: "hidden", style: "position: fixed; z-index: 100; width: 50%" %>
<% end %>

Если я удаляю <%= thing.id %> из тегов id, он хорошо отрисовывается, но при этом выдает эту ошибку:

синтаксическая ошибка, неожиданное '>'

... z-index: 100; height: 70vh" %>
...                              ^

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

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

Измените ваш код ниже, вам нужно использовать строку # interpolation : -

<%= image_tag "ballerino.png", id: "voteDownAnimation#{thing.id}", class: "hidden", style: "position: fixed; z-index: 100; height: 70vh" %>

Выше вы используете тег ruby под ruby тег означает: -

<%=  <%= %> %>

, что синтаксически неправильно в Ruby на Rails.

1 голос
/ 27 марта 2020

Для интерполяции строки следует использовать #{} вместо <%= %>

Изменить

<%= image_tag "ballerino.png", id: "voteDownAnimation<%= thing.id %>", class: "hidden", style: "position: fixed; z-index: 100; height: 70vh" %>

на

<%= image_tag "ballerino.png", id: "voteDownAnimation#{thing.id}", class: "hidden", style: "position: fixed; z-index: 100; height: 70vh" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...