在我的rails应用程序中,我的控制器页面中有以下功能。
def tree
@jstree = Sub.find_by_sql("Select sequence, depth, node, imageid, range from.....several joins")
end
我现在想循环遍历结果集并根据prev和next行的值执行一些操作。
<% @jstree.each do |tree| %>
<%= tree.sequence %>
<% end %>
我想知道如何在上面的循环中获取下一个和上一个行值
非常感谢所提供的所有建议:)
答案 0 :(得分:3)
这取决于你实际需要如何使用它(显然,第一个和最后一个记录不会有上一个/下一个元素)。
如果您执行了each_with_index
,则您拥有索引并可以使用普通数组访问:
@jstree.each_with_index do |elem, n|
prev_elem = @jstree[n-1] unless n == 0
next_elem = @jstree[n+1] unless n == @jstree.size-1
# Etc.
do_stuff_with_next if next_elem # Or
if next_elem
do_stuff
do_other_different_stuff
end
end
答案 1 :(得分:2)
不知道这是否符合您的需求:@jstree.each_with_index do |tree, index|
然后您可以通过@jstree[index-1]
和@jstree[index+1]
找到上一个和下一个(不要忘记检查您是否在第一个或最后一个项目。)
答案 2 :(得分:0)
您可以改为使用each_with_index:
@jstree.each_with_index do |item, index|
...
或者如果你需要更复杂的东西,这里有一个看起来很简单的插件:acts_as_ordered。