Можно ли заполнить атрибут 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";