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

Posted

技术标签:

【中文标题】Rails:数据库中图像的下一个/上一个按钮【英文标题】:Rails: Next/Previous button for images in database 【发布时间】:2013-07-26 03:43:17 【问题描述】:

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

发生这种情况是因为该用户的图像之后没有更多数据。那么如何设置它会旋转他们的图像,即使他们到达数据库中的最后一张图像(如果下一张),反之亦然,如果上一张。

这是我的模型

  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

页面会显示,链接也会显示,但是当我点击next时,我会得到一个错误,因为没有user_id => 15和id => 4,next按钮试图获取@ 987654325@...users/14/images/3中的页面

那么我该如何避免这个问题,只显示与用户关联的下一个/上一个链接?

【问题讨论】:

Rails: "Next post" and "Previous post" links in my show view, how to?的可能重复 【参考方案1】:
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

【讨论】:

以上是关于Rails:数据库中图像的下一个/上一个按钮的主要内容,如果未能解决你的问题,请参考以下文章

Rails -nokogiri GEM:检测 URL 中图像的 MIME 类型

JavaScript中图像的相对路径

Opencv中图像的遍历与像素操作

访问报告中图像的相对路径

用于 Numpy 数组中图像的图像数据生成器

画布中图像的 CORS 设置