Rails:数据库中图像的下一个/上一个按钮

时间:2013-07-26 03:43:17

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我有图片,您可以点击下一个和上一个,但我遇到了麻烦,因为当我查看我的数据库中的最后一个图像(与user_id相关联)时,它显示的路由错误:id =>零。

这种情况正在发生,因为该用户的图像后面没有更多数据。那么我怎么设置它就会旋转它们的图像,即使它们到达数据库中的最后一个图像(如果是下一个),反之亦然,如果之前的话。

这是在我的模型中

  def self.s_prev(img)
    first(:conditions => ["created_at < ?", img.created_at], :order => "created_at desc")
  end

  def self.s_next(img)
    first(:conditions => ["created_at > ?", img.created_at], :order => "created_at asc")
  end

这些是我的链接

<%= link_to "Previous", user_image_path(@image.user_id, @user.images.s_prev(@image)) if user_image_path(@image.user_id, @user.styles.s_prev(@image)) %>

<%= link_to "Next", user_image_path(@image.user_id, @user.images.s_next(@image)) if user_image_path(@image.user_id, @user.images.s_next(@image)) %>

显然if语句由于某种原因没有帮助我

让我们说这些图像表的数据库ID是:

id    user_id 
1       14
2       14
3       14
4       15

所以说如果我在这个页面上: localhost:3000 / users / 14 / images / 2

页面会显示,链接会显示,但是当我点击下一步时,我会收到错误,因为没有user_id =&gt; 15和id =&gt; 4,下一个按钮试图获取localhost:3000/users/14/images/4

中页面的...users/14/images/3

那么如何避免此问题并仅显示与用户关联的下一个/上一个链接?

1 个答案:

答案 0 :(得分:2)

def self.s_prev(img)
  ordered = scoped.order("created_at desc")
  ordered.first(:conditions => ["created_at < ?", img.created_at]) || ordered.first
end

def self.s_next(img)
  ordered = scoped.order("created_at asc")
  ordered.first(:conditions => ["created_at > ?", img.created_at]) || ordered.first
end