2016-10-14 3 views
0

Ich möchte eine Liste von Beiträgen auf der app/views/posts/show.html.erb Seite machen und jede nach ID sortieren.Alle Beiträge auf Zeige Seite anzeigen - Rails anzeigen

Ähnlich wie all die Beiträge auf meiner app/views/posts/index.html.erb Seite gelistet werden mit dem Codeblock unter:

<% @posts.each do |post| %> 
<div class="col-md-4"> 
    <%= image_tag post.img %> 
    <h1><%= post.title %></h1> 
    <p><%= post.content %></p> 
    <br> 
    <%= link_to 'Read More', post_path(post) %> 
</div> 
<% end %> 

Wenn ich versuche, das gleiche jeden zu verwenden Methode auf der Show-Seite Ich erhalte einen Fehler. Aber das ist, was zur Zeit habe ich (es zeigt nur ein img/Link zur aktuellen post):

<h1>Recent Posts</h1> 
    <ul> 
    <li> 
     <%= image_tag @post.img %> 
     <h2> 
     <%= link_to @post.title %> 
     </h2> 
    </li> 
    </ul> 

Antwort

2

Index ist es, alle Elemente von x für die Anzeige.

def index 
    @posts = Post.all 
end 

Also, was Sie tun, nimmt alle Ihre Beiträge und setzen sie in ein Array namens @posts. Sie können über diejenigen mit .each do | x | iterieren oder aufzählen. Das heißt, gehen Sie durch jedes Objekt im Array und zeigen Sie das Post-Bild, Titel und Inhalt.

Sie nicht Ihre Show angezeigt werden, aber in der Regel eine Show wie folgt aussieht:

def show 
    @post = Post.find(params[:id]) 
end 

So werden Sie den Beitrag mit der Suche nach: id und diese Daten in @post speichern. Dies ist nur 1 Objekt, es ist kein Array. Deshalb machen Ihre .each do | x | funktioniert nicht.

Es gibt nichts, was man aus machen

def show 
    @posts = Post.all 
end 

stoppen Aber dann kann man nicht die Vorteile von Schienen Abkürzungen nehmen und sich wiederholen, was in der Programmierung ist nicht gut. Wenn Sie zwei sehr unterschiedliche Fenster wollen, die die gleichen Informationen verwenden, ist es besser, das in HTML/CSS mit ein bisschen Javascript herauszufinden.

0

Die Show-Aktion Ihrer PostsController ist wahrscheinlich nur Einrichten @post, und nicht @posts. Sie können .each mit @post nicht verwenden, da es eine Instanz von Post ist und kein Array oder etwas, das auf .each reagiert. Sehen Sie sich an, wie @posts in der Indexaktion eingerichtet ist, und kopieren Sie diese in Ihre Show-Aktion.

Verwandte Themen