我使用each_slice输出一个两列表。
我想在迭代元素的属性发生变化时插入标题行。
我有:
$(document).ready(function(){
var check1=0;
$("#kategori").bind("keyup change", function(){
var nama = $(this).val();
$.ajax({
url:'cekData/kategori/nama_kategori/'+nama,
data:{send:true},
success:function(data){
if(data==1){
$("#report1").text("");
check1=1;
$('button[type="submit"]').prop('disabled','');
}else{
$("#report1").text("*choose another kategori");
check1=0;
$('button[type="submit"]').prop('disabled',true);
}
}
});
});
});
想要像:
all_users = Users.order('category, name asc').all
all_users.each_slice(2) do |two_users|
<tr>
<td style="text-align:right">
<%= two_users[0].category + ' - ' + two_users[0].name %>
</td>
<% if two_users[1].present? %>
<td>
<%= two_users[1].category + ' - ' + two_users[1].name %>
</td>
<td>
<% else %>
<td></td>
<% end %>
</tr>
<% end %>
在two_users [1]有一个新类别的情况下,这显然不起作用。 我试图避免迭代每个类别和请求的额外SQL查询 每个用户独立。
答案 0 :(得分:0)
all_users.each_slice(2).with_object({cc: nil}) do |two_users, memo|
if category = two_users.detect { |u| u.category != memo[:cc] }
# print additional row or do whatever here
memo[:cc] = category
end
end
Enumerable#detect
此处返回更改的类别,如果没有更改,则返回nil
。
Sidenote :尝试DRY:
<td>
<%= two_users[1].name if two_users[1].present? %>
</td>