下一个和上一个记录

时间:2011-11-02 15:00:05

标签: ruby-on-rails

在我的show.html.erb文件中,我有两个下一个和上一个链接,如此

<%= link_to("Previous Post", @question.previous) if @question.previous %>
<%= link_to("Next Post", @question.next) if @question.next %>

.previous和.next是我模型中找到当前id + 1或-1的方法

在我的模型中是这样的

def previous
  Question.find_by_id(id - 1, :select => 'id')
end

def next
  Question.find_by_id(id + 1, :select => 'id')
end

但是我没有盲目地递增和递减,因为我可能删除了一个“问题”,因此我会收到错误,我是否可以从查询范围中找到显示操作的下一个/上一个“问题”?

2 个答案:

答案 0 :(得分:1)

你尝试过这样的事吗?

def previous
  Question.limit(1).order("id DESC").where("id < ?", id)
end

def next
  Question.limit(1).order("id DESC").where("id > ?", id)
end

答案 1 :(得分:0)

尝试按订单行事。 https://github.com/imedo/acts_as_ordered