上一个/下一个链接不适用于模型中的第一个和最后一个记录(rails)

时间:2013-09-04 12:38:30

标签: ruby-on-rails

这是我的模特:

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 =&gt;“show”,:controller =&gt;“pins”,:id =&gt; nil}

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

1 个答案:

答案 0 :(得分: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? %>