所以我创建了一个 erb 块来获取每个图像标签的坐标,我想在其中显示每个图像在所述坐标处的标签。但是,只显示一个标签,而不是迭代中的每个标签。知道为什么吗?它与.each() 有关吗?
<% if @new_manual.present? %>
<% @new_manual.steps.each do |step| %>
<% i_connection = Contact.find(step.input_contact) %>
<span class="i_connection" data-pos-x="<%= i_connection.pos_x %>" data-pos-y="<%= i_connection.pos_y %>" data-pos-width="<%= i_connection.pos_width %>" data-pos-height="<%= i_connection.pos_height %>"> </span>
<br>
<div class='image_panel'>
<%= image_tag(i_connection.image.image.url(:large)) %>
<div class='planetmap'></div>
<% end %>
<% end %>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("span.i_connection").each(function() {
var pos_width = $(this).data('pos-width');
var pos_height = $(this).data('pos-height');
var xpos = $(this).data('pos-x');
var ypos = $(this).data('pos-y');
$(".tagged_box").css("display","block");
$(".tagged").css("border","5px solid red");
if ((xpos !== undefined) && (ypos !== undefined)) {
console.log('X:' + xpos + 'px' + ' ' + 'Y:' + ypos +'px');
$('.planetmap').append('<div class="tagged" style="width:'+pos_width+'px;height:'+
pos_height+'px;left:'+xpos+'px;top:'+ypos+'px;" ><div class="tagged_box" style="width:'+pos_width+'px;height:'+
pos_height+'px;display:none;" ></div>')
}
}); //END OF SPAN.CONNECTION ITERATION
});
编辑 所以我将 id 更改为 classes,现在标签显示在每张照片上。成功!然而,它仍然显示他们两个,而不是他们受人尊敬的标签。我认为这与 .each() 方法有关。
编辑 #2 最新代码
该块遍历 2 个图像。现在 .tagged 显示在两张图像上,而不是每个受尊重的图像一个标签
<div class="container">
<% if @new_manual.present? %>
<% @new_manual.steps.each do |step| %>
<% i_connection = Contact.find(step.input_contact) %>
<span class="i_connection" data-pos-x="<%= i_connection.pos_x %>" data-pos-y="<%= i_connection.pos_y %>" data-pos-width="<%= i_connection.pos_width %>" data-pos-height="<%= i_connection.pos_height %>"> </span>
<br>
<div class="image_panel">
<%= image_tag(i_connection.image.image.url(:large)) %>
<div class='planetmap'></div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("span.i_connection").each(function() {
var pos_width = $(this).data('pos-width');
var pos_height = $(this).data('pos-height');
var xpos = $(this).data('pos-x');
var ypos = $(this).data('pos-y');
$(".tagged_box").css("display","block");
$(".tagged").css("border","5px solid red");
// if ((xpos !== undefined) && (ypos !== undefined)) {
// console.log('X:' + xpos + 'px' + ' ' + 'Y:' + ypos +'px');
$('.planetmap').append('<div class="tagged" style="width:'+pos_width+'px;height:'+pos_height+'px;left:'+xpos+'px;top:'+ypos+'px;" ><div class="tagged_box" style="width:'+pos_width+'px;height:'+
pos_height+'px;" ></div>')
// }
}); //END OF SPAN.CONNECTION ITERATION
});
</script>
<% end %>
<% end %>