Rails 3, nur das Rendern teilweise, wenn ein Benutzer angemeldet ist
Auf Rails 3.1 app, ich habe eine Methode namens user_logged_in?
von Auszudenken, die ich verwenden möchten, für die Wiedergabe einer teilweise selektiv. Hier ist der code in layouts/application.html-Code.erb:
<% if user_logged_in? %>
<%= render :partial => "home/statusbar" %>
<% end %>
Verwendet es eine teilweise von einem anderen controller. Dies ist die partielle:
<div id="status_bar">
Signed in as <%= link_to current_user.name, edit_user_registration_path %>
</div>
Tritt ein Fehler auf current_user.name
(nicht definierte Methode), weil current_user
ist nil
. Ich konnte das user_logged_in?
überprüfen Sie das innere des teilweise, aber ich denke, es wäre geringfügig effizienter, wenn es in der Ansicht.
Konnte Sie mir direkt an, was die best practices sind, oder wie kann ich das überwinden der nicht definierte Methode Fehler? Ist es normal, dass die Schienen überprüft den code der Vorlage, obwohl es in einem if
block, nicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie
user_logged_in?
ist, wo etwas schief gehen.Funktioniert es, wenn Sie ändern, um dieses?Ich bin vertraut mit Entwickeln, aber nicht die
user_logged_in?
Methode - hast du ihn selbst festlegen? Der normale Helfer in sichten istuser_signed_in?
. Versuchen Sie auch, etwas wie die folgenden:Oben die if-Anweisung in Ihrer Ansicht, und überprüfen Sie die Protokolle, um sicherzustellen, dass Ihr Anruf zurück
false
richtig (user_signed_in?
sollte auch wiederfalse
). Sie sollten nicht immer mit einer null-Fehler in diesen Teil, es sei denn, es wird gerade gerendert (also den eingegebenen code der if-Anweisung).Dass code ausgeführt wird, der Rubin Ente typisierte und dynamische, alle Prüfungen sind zur Laufzeit. So müssen Sie überprüfen Ihre bedingten . Versuchen
sehen und wenn es trotzdem scheitert.
Eine bettter Lösung wäre
Ich bin nicht vertraut mit entwickeln, aber dies sollte funktionieren
Seit der aktuellen user-wil nil, wenn niemand angemeldet ist
Ich die Lösung gefunden, es scheint, dass
Wird nicht mehr verwendet, und stattdessen müssen Sie verwenden
Also mit dem code, den Sie gab das funktionieren sollte:
Dieser code gerendert, eine teilweise für mich.
Gibt es einen noch kürzeren Weg zu Rendern teilweise mit einer bedingten