格式化结果

时间:2013-02-05 10:31:41

标签: ruby-on-rails ruby-on-rails-3

我想将从以下格式返回的字符串更改为显示自客户最后一个订单放置以来有多少个月的日期,我在页面上有以下代码来获取结果 -

<% @lastorder = Order.select("DateCreated").where("customer_id == ?", customer.id).order("Datecreated desc").find(:all, :limit => 1) %>

但是这会返回以下格式 -

 [#<Order DateCreated: "2013-01-09 00:00:00">]

可能有更好的方法可以做到这一点,但目前我还没有意识到这一点。

1 个答案:

答案 0 :(得分:1)

我会像那样重写你的查询:

@last_order = Order
  .where(customer_id: customer.id) # No need to use prepared statement here
  .order('DateCreated DESC')
  .pluck('DateCreated')            # Directly select 1 column
  .first()                         # Only select the first record

如果要以单词显示时间距离,则应使用rails helper:distance_of_time_in_words_to_now(@last_order)

信息:发现distance_of_time_in_words_to_now的别名为time_ago_in_words,更短。