2017-08-09 1 views
1

In meiner Rails Blog App habe ich meinen Willkommens-Controller und zeige index.html.erb an. Und ich habe meine Artikel Controller und Ansichten index.html.erb und show.html.erb.So zeigen Sie den neuesten Artikel in der Rails App in einer anderen Ansicht an

Meine Artikelansicht hat zwei Ansichten, eine für die Auflistung der Artikel index.html.erb und die andere für die Anzeige der Artikel show.html.erb. Wenn Artikel in meiner Artikelansicht aufgelistet werden, funktioniert alles perfekt. Aber mein Ziel ist es, den neuesten Artikel in einem Popup-Modal in meiner Willkommensansicht index.html.erb aufzulisten.

Unten ist der Code für Artikel in den Artikeln Auflistung

<% @articles.reverse.each do |article| %> 
       <div class="w3-quarter"> 
        <div class="panel panel-default" style="width: 300px; min-height: 300px;"> 
         <div class="panel-heading"> 
          <h3><%= article.title %></h3> 
          <p class="w3-opacity"><%= article.created_at.strftime("%b %d, %Y") %> | Comments <span class="label label-primary"><%= article.comments.count %></span> </p> 
         </div> 
         <div class="panel-body"> 
          <p><%= article.text.first(250) %> ...</p> 
          <%= link_to 'Read More', article_path(article), class: 'btn btn-primary btn-block' %> 
         </div> 
        </div> 
       </div> 
      <% end %> 

sehen und unter dem Code ist es, die neuesten Artikel in meiner willkommen Ansicht für die Auflistung

<!-- Modal --> 
     <div id="myModal" class="modal fade" role="dialog"> 
      <div class="modal-dialog"> 

      <!-- Modal content--> 
      <div class="modal-content"> 
       <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal">&times;</button> 
       <h4 class="modal-title">Modal Header</h4> 
       </div> 
       <div class="modal-body"> 
        <h2><%= @article.title %></h2> 
        <p class="w3-opacity">Posted on <%= @article.created_at.strftime("%b %d, %Y") %></p> 
        <hr> 
        <p><%= @article.text.first(500) %></p> 
       </div> 
      </div> 

      </div> 
     </div> 

ich aus der folgenden Fehler angezeigt meine willkommen index.html.erb:

undefined method `title' for nil:NilClass

Irgendwelche Ideen? Wahrscheinlich setzen

+0

Die @article Variable gleich Null ist. Weisen Sie es etwas zu? – urielSilva

+0

Zeigen Sie uns den 'welcome_controller' Code – Pavan

+0

Ich habe eigentlich nichts zugewiesen. Wie würde ich meinen neuesten Artikel in '@ article' speichern? In meinem Artikel/index.html.erb speichert es einen Artikel in Artikel mit einer for-Schleife. Aber ich möchte nicht jeden Artikel durchgehen, ich will nur das Neueste. – Michael

Antwort

1

Sie nicht @article in Ihnen welcome_controller

Probier mal was dieses

class WeclomeController < ApplicationController 

    def index 
    @artice = Article.order(created_at: :desc).first 
    end 

end 
+0

@ m.simonborg 'first' wird auch die Sammlung auf nur die erste Aufzeichnung beschränken ' Article.order (created_at:: desc) .first' und 'Article.order (created_at:: desc) .limit (1)' wird ausgelöst die gleiche Abfrage an die Datenbank –

+0

Sie hatten Recht, ich habe @article nicht in meinem welcome_controller gesetzt. Sobald ich '@ article = Article.order (created_at:: desc) .first' eingegeben habe, hat es perfekt funktioniert! – Michael

+0

Ich habe eine Frage, wenn ich @article in meinem application_controller, wird diese Variable in der gesamten Anwendung zugänglich werden? – Michael

Verwandte Themen