Я новичок в рельсах и javascript, у меня есть таблица мест, каждое из которых относится к типу и области.Они отображаются как частичные на странице индекса, а также у каждого есть свой значок на карте слева от экрана.
Я только что добавил новую таблицу mapicons, в которой просто хранится изображение, загруженное с помощью скрепки, в мое приложение, чтобы у каждого venuetype был свой значок.Все это прекрасно работает, однако javascript, который я использовал для размещения значков на карте, разрывается, когда я включаю новый mapicon.
рабочее размещение mapicon (_venue.html.erb)
<%= link_to venue do %>
<div class="venue_partial">
<span class="venue_partial_name"><%= venue.name %></span>
<div id="venue_map_icon_<%= venue.id %>" class="venue_map_icon" style="position:absolute;"></div>
</div>
<% end %>
<script type="text/javascript">
document.getElementById("venue_map_icon_<%= venue.id %>").style.left= "<%= venue.iconleftpx %>px";
document.getElementById("venue_map_icon_<%= venue.id %>").style.top= "<%= venue.icontoppx %>px";
</script>
Правильно отображает значок карты на карте, но в виде черных звезд, как я установил в css.
неправильное размещение карты (_venue.html.erb)
<%= link_to venue do %>
<div class="venue_partial">
<span class="venue_partial_name"><%= venue.name %></span>
<div id="venue_map_icon_<%= venue.id %>" <%= image_tag venue.venuetype.mapicon.mapicon.url(:mapicon), :style => "position:absolute;", :class => "venue_map_icon" %></div>
</div>
<% end %>
<script type="text/javascript">
document.getElementById("venue_map_icon_<%= venue.id %>").style.left= "<%= venue.iconleftpx %>px";
document.getElementById("venue_map_icon_<%= venue.id %>").style.top= "<%= venue.icontoppx %>px";
</script>
Отображает правильные карты, которые я загрузил и назначил каждому типу venuetype, но они расположены в верхнем правом углу их части, а не на карте в левой части экрана.
Надеюсь, я хорошо спросил, любые уточнения, пожалуйста, спросите.Спасибо за любую помощь, она очень ценится!
РЕДАКТИРОВАТЬ
Вот пара скриншотов, которые, я надеюсь, помогут, во-первых, каковы в настоящее время mapicon.Частицы места проведения обозначены как Tester1, Tester2 и т. Д. С большим цветным значком слева от имени, а серые буквы под именем - это тип (Тип 1, 2 или 3).А значки карты - черные звезды слева, расположенные абсолютно с верхним и левым значениями, взятыми из соответствующих записей места проведения.
Второй снимок экрана - когда я меняю кодкак показано выше, части показывают то же самое, но mapicon вместо того, чтобы быть черными звездами, показывают правильно как меньшие цветные квадраты, но не размещают правильно.Они придерживаются правого верхнего угла своих собственных мест проведения.
Это то, что я хочу, чтобы это отображалось как: (это макетированное изображение)
CSS для mapicons просто:
.venue_map_icon {
width: 19px;
height: 18px;
padding: none;
margin: none;
background-image:url(/images/mapicon.png);
border: none;
}
.venue_map_icon:hover {
background-image:url(/images/mapicon_hover.png);
}
Модельные отношения
Места проведения
class Venue < ActiveRecord::Base
belongs_to :venuetype
end
Venuetypes
class Venuetype < ActiveRecord::Base
has_many :venues
belongs_to :mapicon
has_attached_file :icon,
:styles => {
:thumb=> "100x100>",
:small => "150x150>",
:medium => "300x300>",
:large => "400x400>" },
:default_url => '/images/noimage.png'
end
Mapicons
class Mapicon < ActiveRecord::Base
has_many :venuetypes
has_attached_file :mapicon,
:styles => {
:large => "640x480",
:medium => "300x300",
:thumb => "100x100",
:mapicon => "20x20" }
end