Hinzufügen created_at DESC Funktionalität in Rails

Habe ich eine app, mit der post-und Kommentar-Modelle. In meiner index action/view, ich bin der Iteration durch die post und zeigt Sie aus den meisten vor kurzem erstellt am ältesten. Meine Kommentare sind geschachtelt innerhalb meiner Beiträge, so in meinem post zeigen, Aktion/Ansicht möchte ich für die Iteration, obwohl die Kommentare und Sie zu zeigen, aus den meisten vor kurzem erstellt am ältesten. Ich kann nur scheinen, um diese zu arbeiten, wenn ich eine Methode in meinem post.rb - Datei. Ich habe diese:

post.rb:

  def newest_comments
    self.comments.order("created_at DESC")
  end  

In meinem Beitrag anzeigen, ich kann Durchlaufen und die Kommentare posten und es funktioniert Super:

<% @post.newest_comments.each do |comment|
<% end %>

ABER ich möchte, um diese Funktionalität in der controller-Schicht, aber ich kann nicht herausfinden, wie. Dies ist, was ich in der show-action in meinen Beiträgen controller:

  def index
    @posts = Post.all.order("created_at DESC")
  end

  def show
    @comment = Comment.new
    @comments = Comment.all.order("created_at DESC")
  end

Und jetzt meine aktuelle post-Karte anzeigen:

<% @post.comments.each do |comment| %>
<% end %>

Den @post var ist es, weil meiner vor der Aktion. Meine Frage ist also, warum ich keinen Zugriff auf diese ivar in meinem Beitrag anzeigen, indem Sie einfach den Aufruf in meiner show view?

nicht über Ihre Frage, aber es ist nicht eine gute Praxis auf selbst-in-class-Methoden.
Richtig, das ist ein weiterer Grund, ich möchte das Thema aus meiner Modell-Ebene.

InformationsquelleAutor user2045764 | 2013-12-18

Schreibe einen Kommentar