Wal*_*ong 3 ruby ruby-on-rails-4
我正在创建两个不同类的列表页面,我想按日期desc(名称asc)对它们进行排序。两者都有在每个模型中带有date方法的datetime字段。
posts = Post.all
news = News.all
@news_and_posts = posts.zip(news).compact.select(&:date).sort {|x| [-x.date, x.name]}
Run Code Online (Sandbox Code Playgroud)
这会引发NoMethodError:2014年11月11日星期二的未定义方法`-@':日期
在其他几个问题上,在sort_by和sort中都给出了此答案,但是我没有运气。
Rails 4.0.5 Ruby 2.1.3
几件事。首先,您应该sort_by在上面的示例中使用,因为该块使用了一个参数。该sort块需要两个-项目A和项目B,以进行比较。接下来,您可以通过从重要日期(例如今天的日期)中减去日期来获得所需的内容:
objects.sort_by {|x| [Date.today - x.date, x.name]}
Run Code Online (Sandbox Code Playgroud)
即使日期可能是将来的日期,数学仍然有效。
这些页面详细介绍了sort和之间的区别sort_by:
http://rubycuts.com/enum-sort-by
顺便说一句,我同意其他评论者的意见,您确实应该在数据库查询本身中对这些记录进行排序,但是我想解决您所询问的特定问题。
| 归档时间: |
|
| 查看次数: |
4681 次 |
| 最近记录: |