de home_controller.rb:Pourquoi cette vue n'affiche-t-elle pas les messages dans l'ordre décroissant? (Simple question)
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 => '>' %>
but de Ce point de vue est de montrer le dernier message de chaque balise. L'horodatage updated_at d'un message est mis à jour chaque fois que ce post est commenté.
il est l'affichage des postes avec cette commande:
tag id = 1
tag id = 2
tag id = 3
...
Quelqu'un peut-il me dire pourquoi le code affiche au-dessus des messages dans l'ordre dans lequel leurs balises ont été créés?
'@posts = @ posts.paginate: page => params [: page],: per_page => 8,: order => « updated_at DESC'' ne change pas l'ordre. J'ai aussi essayé avec tous les autres '' @ posts' dans la maison # index' – BasicObject
Il ne fonctionnera pas parce que le temps que vous avez paginera vous tous les postes ... vous pourriez peut-être définir dans votre modèle post - > default_scope: order => « id DESC » – jordinl
j'aurais préféré d'utiliser la portée par défaut, mais cela n'a pas fonctionné. La méthode d'avaynshtok a fait cependant. – BasicObject