0

これを理解できないのは少し恥ずかしいですが、index.html.erbはupdated_atによるデータの順序を示しています。ここで、created_atで順序付けしたいので、最新のものを一番上に置きます。これどうやってするの ?

私のindex.html.erbは標準のものです

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

2 に答える 2

3

@products の定義方法によっては、次のように order を使用することもできます。

Product.order('created_at DESC')

これにより、すべての製品が表示され、created_at の降順で並べ替えられます。

ただし、たとえば Product.all.order('created_at DESC') を使用すると、.all は結果を配列に変換するため、機能しません。その場合、他の回答が示唆しているように、sort_by を使用する必要があります。

配列で使用していない限り、順序はモデルで機能します。

于 2013-07-30T19:13:41.043 に答える
1

これをコントローラーに書き込みます

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

これで問題は解決すると思います。

于 2013-07-30T18:53:25.240 に答える