【发布时间】:2010-07-29 02:22:40
【问题描述】:
我在帕德里诺工作,我的控制器中有这个
@work.find_by_id(params[:id])
我想在我的视图中添加上一个/下一个按钮,因此必须能够获得列表中下一个项目的路径。如何使用 ActiveRecord 做到这一点?
【问题讨论】:
标签: database activerecord orm padrino
我在帕德里诺工作,我的控制器中有这个
@work.find_by_id(params[:id])
我想在我的视图中添加上一个/下一个按钮,因此必须能够获得列表中下一个项目的路径。如何使用 ActiveRecord 做到这一点?
【问题讨论】:
标签: database activerecord orm padrino
您可能需要查看ActsAsAdjacent plugin。我不确定您是否可以在 Padrino 中使用插件,但代码非常简单,应该能够适应您的需求。
【讨论】:
我像这样使用 PreviousNextable 模块:
module PreviousNextable
def self.included(klass)
klass.class_eval do
extend ActiveSupport::Memoizable
memoize :previous
memoize :next
end
end
def previous
self.class.last :order => 'name', :conditions => ['name < ?', self.name]
end
def next
self.class.first :order => 'name', :conditions => ['name > ?', self.name]
end
end
此代码改编自 Ryan Bates 给出的 SO 答案。您确定上一个或下一个的顺序和条件可能会有所不同。可能您会想要使用“created_at”。
在模型类中包含模块:
class Place < ActiveRecord::Base
include PreviousNextable
你走了。
【讨论】: