Можно ли заполнить атрибут javascript из поля записей?

У меня есть таблица записей мест, которые отображаются на странице индекса как частичные. Возможно ли, чтобы значения.left и.top в javascript были заполнены целочисленным полем, взятым из записей места проведения?

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

Частичное место проведения:

<%= link_to venue do %>
  <div class="venue_partial">

    <div class="venue_icon">
      <%= image_tag venue.venuetype.photo.url(:thumb), :class => 'image' %>
    </div>

    <span class="venue_partial_name"><%= venue.name %></span>
    <span class="venue_area_and_type"><%= venue.venuetype.name %></span>
    <span class="venue_area_and_type"><%= venue.area.name %></span>
  </div>

  <div id="venue_map_icon" style="position:absolute;"></div>

  <script>
    document.getElementById("venue_map_icon").style.left= "300px";
    document.getElementById("venue_map_icon").style.top= "310px";
  </script>
<% end %>

Большое спасибо за любую помощь, высоко ценится!

2 ответа

Решение

Да, по обоим пунктам. Теперь у вас проблема в том, что вы ссылаетесь на элемент по идентификатору в javascript, но этот идентификатор не является уникальным, поэтому javascript находит первый экземпляр этого идентификатора и применяет к нему правила, а не к остальным элементам div. Чтобы это исправить, вам нужно использовать уникальные идентификаторы:

<%= link_to venue do %>
  <div class="venue_partial">

    <div class="venue_icon">
      <%= image_tag venue.venuetype.photo.url(:thumb), :class => 'image' %>
    </div>

    <span class="venue_partial_name"><%= venue.name %></span>
    <span class="venue_area_and_type"><%= venue.venuetype.name %></span>
    <span class="venue_area_and_type"><%= venue.area.name %></span>
  </div>

  <div id="venue_map_icon_<%= venue.id %>" style="position:absolute;"></div>

  <script>
    document.getElementById("venue_map_icon_<%= venue.id %>").style.left= "<%= venue.left %>px";
    document.getElementById("venue_map_icon_<%= venue.id %>").style.top= "<%= venue.top %>px";
  </script>
<% end %>

Конечно, он просто должен быть выведен так же, как вы делаете это в HTML:

document.getElementById("venue_map_icon").style.left = "<%= venue.somevalue %>px";
Другие вопросы по тегам