Почему этот вид не отображает сообщения в порядке убывания? (простой вопрос) - PullRequest
1 голос
/ 22 сентября 2010

home_controller.rb:

class HomeController < ApplicationController

  def index
    @title = "tags"
    @posts = Post.tag_counts.collect do |tag|
      Post.tagged_with(tag).first
    end
    @posts.flatten.uniq
    @posts = @posts.paginate :page => params[:page], :per_page => 8

  end

end

index.html.erb:

<%- for post in @posts -%>

  <%- post.tags.each do |t| -%>
    <%= link_to t.name, tag_path(t) %>
  <%- end -%>

  <%= link_to post.title, post %>

  <%- if post.comments.empty? -%>

  <% else %>

    <%= link_to pluralize(post.comments.count, 'reply'), :controller => 'posts', :action => 'show', :id => post %>

  <%- end -%>

  <%= timeago(post.updated_at) %>

<%- end -%>

<%= will_paginate @posts, :previous_label => '<', :next_label => '>' %>

Цель этого представления - показать последнее сообщение каждого тега. Временная метка updated_at сообщения обновляется каждый раз, когда этот комментарий комментируется.

выводит сообщения с таким порядком:

 tag id = 1
 tag id = 2
 tag id = 3
          ...

Может кто-нибудь сказать, почему в приведенном выше коде сообщения отображаются в том порядке, в котором они были созданы?

Ответы [ 3 ]

1 голос
/ 23 сентября 2010

Вы вызываете paginate для массива постов, поэтому порядок такой же, как у массива.Если вы не можете гарантировать, что массив будет создан без сортировки объектов, как вы хотите, вы всегда можете отсортировать его перед вызовом paginate:

@posts = @posts.sort_by(&:updated_at)
0 голосов
/ 02 октября 2013

Поместите этот фрагмент кода в указатель

@posts = Post.all.order('created_at DESC')

Это должно работать.

0 голосов
/ 23 сентября 2010

Вы должны указать заказ где-нибудь:

@posts = Post.all(:order => 'id DESC')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...