Ruby on rails Rails 3.2确定每个块中的最后一个元素
给定以下代码,是否有方法测试迭代是否在最后一条记录上?我已经在我想测试的行中给出了一些伪代码Ruby on rails Rails 3.2确定每个块中的最后一个元素,ruby-on-rails,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3.2,给定以下代码,是否有方法测试迭代是否在最后一条记录上?我已经在我想测试的行中给出了一些伪代码 @shipments.each do |shipment| puts shipment.id puts shipment.desc unless shipment.last? #is there a way to do this line? puts "that was the last shipment" end end 没有内置方法,但最接近这种方法的可能是: unle
@shipments.each do |shipment|
puts shipment.id
puts shipment.desc
unless shipment.last? #is there a way to do this line?
puts "that was the last shipment"
end
end
没有内置方法,但最接近这种方法的可能是:
unless shipment == @shipments.last
这假设您使用的是一组ActiveRecord结果,因为如果@shippings
是一个数组,如[1,2,3,2]
,2
将匹配第二个元素和最后一个元素。使用该方法,您可以做类似的事情,但我相信应该有更好的方法来实现这一点
@shipments.each do |shipment|
puts shipment.id
puts shipment.desc
unless shipment == @shipments.last #is there a way to do this line?
puts "that was the last shipment"
end
end
您可以在控制台上尝试:
Array.methods
,然后发现您不能。很明显,您不能。这就是我在这里问的原因。一种方法是从循环内部删除此条件,运行完整的循环,并在使用@shippings之后立即删除。last
我不能这样做,因为我在块内做额外的工作,我只希望在不是循环的最后一次迭代时发生