如何在rails而不是updated_at中的index.html.erb中通过created_at显示数据顺序?

时间:2013-07-30 18:49:33

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

我很尴尬,我无法弄清楚这一点,但index.html.erb显示了一些data_at的数据顺序,因为我想通过created_at订购,最新的一个在顶部。我怎样才能做到这一点 ?

我的index.html.erb是标准的

<% @products do |product| %>
  <%= product.name %>
  <%= link_to 'Edit', edit_product_path(@product) %>
<% end %>

2 个答案:

答案 0 :(得分:2)

根据您定义@products的方式,您也可以使用订单,如:

Product.order('created_at DESC')

这将显示所有产品,并按降序排列created_at。

但是,如果您使用Product.all.order('created_at DESC'),它将无法工作,因为.all将结果转换为数组。在这种情况下,您需要使用sort_by,如另一个答案所示。

只要您没有在阵列上使用它,订单就可以在您的模型中使用。

答案 1 :(得分:1)

将此内容写入您的控制器

@products = @products.sort_by {|obj| obj.created_at }.reverse

我认为这可以解决你的问题。