次と前の ID を検索し、それらを使用してリンクを作成できます (現在の ID + または - 1 を使用する代わりに)。
# Record/123 : display a record
get '/record/:id' do
# Get record belonging to id
@record = Record.first({id: params[:id]})
# Get id for next record
next = Record.first({:fields => [:id],
:order => :id.asc,
:id.gt => @record.id})
# (or the first record)
next = Record.first({:fields => [:id],
:order => :id.asc}) unless next
@next_id = next[:id]
# Get id for previous record
prev = Record.last({:fields => [:id],
:order => :id.asc,
:id.lt => @record.id})
# (or the last record)
prev = Record.last({:fields => [:id],
:order => :id.asc}) unless prev
@prev_id = prev[:id]
# Display the record
erb :record
end
次に、ビューで @next_id と @prev_id を使用して、正しい URL にアクセスするだけです。
「(または最初のレコード)」の部分は、最後にいる場合 (つまり、現在のレコードの後にレコードがない場合) に最初のレコードに移動するために使用されます。
編集 :
# Get id for next record
next = Record.first({:fields => [:id],
:order => :id.asc,
:id.gt => @record.id})
テーブル内の現在の ID の次の ID を見つける必要があります。SQL では、次のようになります。
SELECT Id # :fields => [:id]
FROM Records
WHERE Id > Current_Id # :id.gt => @record.id
ORDER BY Id ASC # :order => :id.asc
":fields => [:id]" がないと、ID のみが必要な場合に "SELECT *" が必要になります。