【问题标题】:Sorting entries in Ruby on Rails 4 index by date/time, not order of input在 Ruby on Rails 4 索引中按日期/时间排序条目,而不是输入顺序
【发布时间】:2015-06-26 15:30:03
【问题描述】:

这是我的 Rails 4 应用程序:http://wheels2015.herokuapp.com

我希望条目(事件)按时间顺序列出,而不是按我将它们输入数据库的顺序(目前的顺序)。

This question 与我的不一样,但它似乎在一般情况下,所以当用户建议 OP 在 Rails API (http://apidock.com/rails/ActiveRecord/QueryMethods/order) 中查找 ActiveRecord 查询方法时,我做到了。

你认为这会达到我想要的效果吗?

Event.order('date_time')
=> SELECT "events".* FROM "event" ORDER BY event_date_time

这是我的事件控制器中负责index 页面以及event params 的部分:

 def event_params
      params.require(:event).permit(:event_name, :location, :description, :event_date_time, :organizer, :category) if params[:event]
    end 

  def index
    @events = Event.all
  end

【问题讨论】:

  • 好吧,你为什么不试试呢?我不明白这个问题。你想让我为你运行代码并告诉你它有效吗?因为您的应用可以为您做同样的事情。
  • event_date_time 是否与created_at 相同? created_at 是您创建条目时的时间戳。我想你想要Event.order('created_at')
  • @rob 我已经为不同的日期和时间添加了一个特定字段。我希望它按created_at 的顺序排序,我怀疑它已经这样做了,因为我的最新条目是最后一个,即使它发生在我制作的其他几个条目之前。
  • 我不确定 Rails 文档和/或教程没有回答这个问题。
  • @events = Event.order('event_date_time') => SELECT "events".* FROM "event" ORDER BY event_date_time 给了我一个语法错误,所以我尝试了普通的旧 @events = Event.order('event_date_time') 并且它有效!谢谢,我认为只是写出问题的行为有所帮助。

标签: ruby-on-rails ruby-on-rails-4 activerecord


【解决方案1】:

我认为我在理解文档时遇到了一些小问题,但这符合我的要求:

events_controller.rb:

  def index
    @events = Event.order('event_date_time')
  end

我发誓我没有问这个问题,所以我可以在 5 分钟后回答;更像是写问题的动作帮助我思考?我不希望任何人努力写答案,但如果其他人已经在研究一个答案,我会支持他们的而不是我自己的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2012-08-16
    相关资源
    最近更新 更多