0

这是我的模型:

def next
  self.class.find(:first,
    :conditions => ['id > ?', self.id], 
   :order => 'id')

end 
def previous
  self.class.find(:first,
    :conditions => ['id < ?', self.id],
   :order => 'id desc')
end

和显示页面上的代码:

   <button align="center" type="button" class="btn btn- btn-xs">
            <%= link_to("Previous Image", pin_url(@pin.next))%>  </button>

   <button align="center" type="button" class="btn btn- btn-xs">
            <%= link_to("Next Image", pin_url(@pin.previous)) %> </button> </P>  

除非您在数据库中的第一条或最后一条记录上,否则这非常有用。我收到了这个错误:

没有路线匹配 {:action=>"show", :controller=>"pins", :id=>nil}

当用户在第一条和最后一条记录上导航时,如何避免此错误?

4

1 回答 1

0

您可以将您的辅助方法更改为

def next_image
  self.class.where('id > ?', self.id).order('id asc').first
end
def previous
  self.class.where('id < ?', self.id).order('id desc').first
end

然后在视图中:

<% prev = @pin.previous %>
<% next_image = @pin.next_image %>  
<%= link_to 'Previous image', pin_url(prev) if prev.present? %>
<%= link_to 'Next image', pin_url(next_image) if next_image.present? %>
于 2013-09-04T12:59:33.353 回答