【问题标题】:Scope ordering by reverse order not working [closed]按相反顺序进行范围排序不起作用[关闭]
【发布时间】:2014-06-09 20:57:30
【问题描述】:

我有我的范围:

scope :latest_photos, -> {order(:created_at).reverse_order.limit(10)}

应该把最新的照片放在第一位吧?好吧,照片会放在最后一个位置。

我也试过了:

scope :latest_photos, -> {order('created_at DESC').limit(10)} 

但什么都没有。有任何想法吗?谢谢!

编辑

这里出了点问题:

routes.rb

get 'spots/ultimos' => 'photos#latest

照片控制器

def latest
        @categories = Category.all
        @zones = Zone.all
        @photos = Photo.latest_photos
        @action = 'general'
        @photos = Photo.paginate(:page => params[:page])
        render :index
    end

型号

  scope :latest_photos, -> {order(created_at: :desc).limit(10)}

【问题讨论】:

  • Photo.latests_photos.to_sql 有什么用?

标签: ruby-on-rails ruby scopes


【解决方案1】:
def latest
    @categories = Category.all
    @zones = Zone.all
    @photos = Photo.latest_photos
    @action = 'general'
    @photos = Photo.paginate(:page => params[:page])
    render :index
end

您已经分配了两次@photos 变量,第二次分配覆盖了前一次。而是这样做:

def latest
    @categories = Category.all
    @zones = Zone.all
    @photos = Photo.latest_photos
    @action = 'general'
    render :index
end

要分配的实际值取决于您要在此处实现的目标。由于动作被称为最新并且您的范围有限制,我假设您不需要在这里分页。

【讨论】:

  • 但是,我如何对照片进行分页呢?我需要。像这样? @photos = Photo.latest_photos.paginate(:page => 参数 [:page]) ?
  • 是的,这行得通,我覆盖了照片,为了保留分页,我所做的是:@photos = Photo.latest_photos.paginate(:page => params [:page])
  • @Gibson - 如果你想要分页,那么这是正确的。
  • 感谢您的宝贵时间@BroiSatse
猜你喜欢
  • 2013-08-07
  • 1970-01-01
  • 2021-11-05
  • 2017-10-30
  • 2012-10-24
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多