2016-07-28 10 views
0

Ich arbeite an einer super einfachen Newsletter-Anwendung, und ich bin verwirrt über diesen Fehler. Warum gibt es eine nil Klasse? Ich frage es nur zu rendern, also warum kann ich nicht einen redirect_to setzen wo der render Aufruf ist ?.Ich bekomme den Fehler undefinierte Methode `leer? ' für Nil: NilClass

<% if admin_signed_in? %> 

    <p id="notice"><%= notice %></p> 

    <h1>Subscribedusers</h1> 

    <table> 
<thead> 
    <tr> 
    <th>Email</th> 
    <th colspan="3"></th> 
    </tr> 
</thead> 

<tbody> 
<% @subscribedusers.each do |subscribeduser| %> 
    <tr> 
    <td><%= subscribeduser.email %></td> 
    <td><%= link_to 'Show', subscribeduser %></td> 
    <td><%= link_to 'Edit', edit_subscribeduser_path(subscribeduser) %></td> 
    <td><%= link_to 'Destroy', subscribeduser, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
    <% end %> 
</tbody> 
</table> 

<br> 

<%= link_to 'New Subscribeduser', new_subscribeduser_path %> 

<% else %> 

<%= render '/' %> 

<% end %> 

Warum funktioniert dieser Teil des Codes <%= render '/' %> Trigger ein undefined method 'empty?' for nil:NilClass Fehler entdeckt?

+0

Was versuchen Sie mit 'render '/'' zu erreichen? –

+0

ich möchte es auf die Homepage zurückkehren –

Antwort

0

Da Ihr Wunsch ist es, den Benutzer auf die Homepage zurückzukehren, statt

render '/' 

sollten Sie

redirect_to root_path 

Der Unterschied ist render die Ausgabe als Ergebnis angezeigt werden, bereitet von die aktuelle Anfrage und redirect_to Befehle des Browsers des Benutzers, um eine neue Anfrage an angegebenen URL zu machen.

Während es möglich ist, den Inhalt Ihrer Homepage in einer willkürlichen Aktion darzustellen, ist dies selten wünschenswert. Ein Nachteil ist, dass die URL der Seite nicht automatisch in der Adresszeile des Browsers auf den Stamm Ihrer Site aktualisiert wird.

Als eine Randnotiz ist render '/' keine korrekte Syntax. rendergenerally accepts ein Hash der Optionen und keine Zeichenfolge.

+0

Es hat funktioniert! Vielen Dank –

0

Warum haben Sie eine <% else%> -Klausel ohne irgendwelche bedingten Schleifen? Und was versuchst du mit <% render '/'%> aufzurufen? Versuchen Sie, die Indexseite aufzurufen? Wenn ja, können Sie angeben, indem Sie <% render "index"%> sagen.

+0

Sorry, es gibt eine Wenn-Bedingung, ich habe es nicht in den Code richtig aufgenommen, immer noch den gleichen Fehler obwohl –

0

So brauchen Sie nicht, wenn und sonst Block in Sicht Seite für Seite Redirect zum Root-Pfad. Von der Aktion Ihres Controllers benötigen Sie den folgenden Code.

wenn admin_signed_in? redirect_to root_path Ende

auch entfernen, wenn und sonst blockieren aus Sicht.

Verwandte Themen