2016-04-20 14 views
2

Ich bin neu in Phoenix, aus RoR. Es scheint, dass die Ansichten Rails-Helfern ähneln und der Ort, an dem Helferfunktionen platziert werden können.Zugriff auf die Verbindung oder "weist" aus einer Ansicht

Wenn das wahr ist, wie greifen wir auf die Verbindung oder die Abtretungsempfänger der Verbindung aus der Ansicht?

Hier ist mein Beispielproblem.

Die App zeigt eine Liste aller Benutzer an. Aber ich will nur die API-Token für den Benutzer zeigen, die derzeit angemeldet ist, so ich in der UserView ein Verfahren denke ist für in der Vorlage so etwas wie dies zu tun:.

<b><%= first_name(@user) %></b> (api_token: <%= display_token(@user) %>) 

Für die Hilfsmethode in der Ansicht muss ich in der Lage sein, etwas in der Art zu tun:

def display_token(user) do 
    case conn.assigns.current_user do 
    user -> user.api_token 
    nil -> "" 
    _ -> "hidden" 
    end 
end 

Alle Einblicke sind willkommen.

Antwort

7

Es gibt keinen Zustand auf Funktionen in der Ansicht automatisch in Phoenix übergeben. Sie müssen @conn in sich selbst als Argument an display_token übergeben.

Vorlage:

<b><%= first_name(@user) %></b> (api_token: <%= display_token(@conn, @user) %>) 

Ausblick:.

def display_token(conn, user) do 
    case conn.assigns.current_user do 
    ^user -> user.api_token 
    nil -> "" 
    _ -> "hidden" 
    end 
end 

(Sie müssen auch die Pin-Operator current_user gegen die user als Argument übergeben übereinstimmen ich in die behoben haben, dass Code oben.)

+1

Danke! Funktionale Programmierung ist für mich ein Paradigmenwechsel, aber ich finde Phoenix/Elixir eine Menge Spaß. Das funktioniert perfekt. – Midwire

Verwandte Themen