Да по обоим пунктам.Теперь у вас проблема в том, что вы ссылаетесь на элемент по идентификатору в 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 %>