
现在,当您点击图片时,无论其位于何处(索引,会员的个人资料或会员专辑),您都可以进入展示页面.我想我可能需要一个上一个和下一个链接来显示下一个图像,但我需要能够将图像限制到它们的父容器.
因此,如果我正在查看相册中的图像,我需要下一个和上一个链接才能链接到该相册中的图像.如果我正在查看会员的图像而不是在相册中,那么链接将指向会员所拥有的图像,而不是相册中的图像.
如果图像位于首页,则链接将指向所有图像.
解决方法 如果您不想分页,则必须执行其他查询以确保指向下一个/上一个记录的链接是准确的.示例如下……在您的图像模型中:
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中对象的下一个或上一个记录?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)