Как я могу создать значки карты для партиалов?

У меня есть список записей, отображаемых как частичные на одной стороне экрана, которые можно фильтровать. А с другой стороны у меня есть нарисованная от руки карта, представляющая собой div с фоновым изображением. Как я могу иметь значок для каждой записи на карте, который отображается только при частичном отображении записей?

Индексная страница выглядит так:

<div class="map_container">
</div>

<div class="filter_options_container">
  filter form stuff is here
</div>

<div class="venue_partials_container">
  <%= render :partial => 'venue', :collection => @venues %>
  <div class="clearall"></div>

  <%= will_paginate @venues %>

  <div class="venue_partial_button">
    <%= link_to 'add a new venue', new_venue_path %>
  </div>
</div>

<div class="clearall"></div>

Спасибо за любую помощь.


person Dave    schedule 13.02.2011    source источник


Ответы (1)


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

<script type="text/javascript"><!--
data.push({
  x: <%= this.x %>,
  y: <%= this.y %>,
  someOtherStuff: <%= this.stuff %>
});
--></script>

и после этого добавьте функцию, которая будет перебирать этот массив данных:

function insertIconOnMap(mapItem){
  var img = $("<img>", {
    'class': "mapIcon",
    'src': mapItem.someOtherStuff
  }).css({
    'left': mapItem.x,
    'top': mapItem.y
  });
  $("#map").append(img);
}
data.each(insertIconOnMap);

и некоторые css, как

#map { position: relative; }
#map .mapIcon { position: absolute; }

Если хотите поизящнее... Я забыл все, что знал о Ruby :-D И это вы поставили тег javascript на свой вопрос ;-)

person kirilloid    schedule 14.02.2011
comment
Большое спасибо за ответ! Я ничего не знаю о javascript, но подумал, что это правильный путь, я поиграю с тем, что вы опубликовали, и вернусь с тем, как все идет. - person Dave; 14.02.2011