ruby-on-rails – 如何链接到属于Rails 3中对象的下一个或上一个记录?

ruby-on-rails – 如何链接到属于Rails 3中对象的下一个或上一个记录?,第1张

概述所以我有一个图像(纹身)共享网站有3种不同的索引图像方式.显示 Image.all的主页面,显示@ member.images.all的成员图像,以及成员的专辑图像.也就是说,一个会员有很多图像(和专辑),一个专辑有很多图像. 现在,当您点击图片时,无论其位于何处(索引,会员的个人资料或会员专辑),您都可以进入展示页面.我想我可能需要一个上一个和下一个链接来显示下一个图像,但我需要能够将图像限制到 所以我有一个图像(纹身)共享网站有3种不同的索引图像方式.显示 Image.all的主页面,显示@ member.images.all的成员图像,以及成员的专辑图像.也就是说,一个会员有很多图像(和专辑),一个专辑有很多图像.

现在,当您点击图片时,无论其位于何处(索引,会员的个人资料或会员专辑),您都可以进入展示页面.我想我可能需要一个上一个和下一个链接来显示下一个图像,但我需要能够将图像限制到它们的父容器.

因此,如果我正在查看相册中的图像,我需要下一个和上一个链接才能链接到该相册中的图像.如果我正在查看会员的图像而不是在相册中,那么链接将指向会员所拥有的图像,而不是相册中的图像.

如果图像位于首页,则链接将指向所有图像.

解决方法 如果您不想分页,则必须执行其他查询以确保指向下一个/上一个记录的链接是准确的.示例如下……

在您的图像模型中:

class Image < ActiveRecord::Base  belongs_to :album  def prevIoUs    Image.where("album_ID = ? AND ID < ?",self.album.ID,self.ID).first  end  def next    Image.where("album_ID = ? AND ID > ?",self.ID).first  endend

然后在你的控制器中:

def show  @current_image = Image.find(params[:ID])  @prev = @current_image.prevIoUs  @next = @current_image.next  respond_to do |format|    format.HTML  endend

最后在您的视图中(这是HAML代码):

= link_to_unless(@prev.blank?,'Prev',image_path(@prev))= link_to_unless(@next.blank?,'Next',image_path(@next))

请记住,如果没有找到上一个或下一个图像,则上一个和下一个可以返回nil,因此您不应该在该场景中显示上一个/下一个链接.

如果您最终使用will_paginate或Kaminari gem(强烈推荐),只需在routes.rb文件中添加匹配的路由即可生成“漂亮”路由:

match '/albums/:ID/page/:page' => "albums#show"# put the matched route above the regular :albums resource# so it matches that route first if it's given a pageresources :albums

有效的原因是因为两个分页宝石都使用Rails url_for方法生成上一个/下一个链接,因此Rails将匹配该路由并生成类似http://rtattoos.com/albums/2/page/26而不是http://rtattoos.com/albums/2?page=26的内容

总结

以上是内存溢出为你收集整理的ruby-on-rails – 如何链接到属于Rails 3中对象的下一个或上一个记录?全部内容,希望文章能够帮你解决ruby-on-rails – 如何链接到属于Rails 3中对象的下一个或上一个记录?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1286679.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存