2015-09-05 20 views
9

Ich arbeite an dem Crud-Teil eines Modells, zu dem ich Image-Unterstützung hinzugefügt habe. Idealerweise würde ich gerne das Bild zeigen, wenn Sie ein Modell bearbeiten, was ich so machen würde.Wie überprüfe ich, ob eine Variable in eex existiert?

<%= Logo.url({@company.logo, @company}, :thumb) %> 

Das Problem ist, dass das Unternehmen Variable in der Bearbeitungsaktion nur zur Verfügung steht, da es noch ein Unternehmen auf die neue Aktion ist, so muß ich überprüfen, ob die @company gesetzt.

<%= unless @company do %> 
    <%= Logo.url({@company.logo, @company}, :thumb) %> 
<% end %> 

Das Problem ist, dass dies den folgenden Fehler ergibt.

"zuweisen @company in eex Vorlage nicht lieferbar Abtretungsempfänger.: [: Aktion,: changeset]"

Ich habe versucht, mit is_nil, aber gleichen Fehler.

Antwort

25

BEARBEITEN Vor Phoenix 0.14.0@company würde Null zurückgeben, wenn es nicht festgelegt wurde. Es wurde so zu erhöhen, geändert, dass die Zuordnung eindeutig sein würde (explizit über implizit.)


Wenn Sie entweder @company oder assigns.company verwenden, dann wird ein Fehler ausgelöst werden. Wenn Sie jedoch assigns[:company] verwenden, wird NULL zurückgegeben, wenn der Wert nicht festgelegt ist.

<%= if assigns[:company] do %> 
    <%= Logo.url({@company.logo, @company}, :thumb) %> 
<% end %> 

Es ist erwähnenswert, dass, wenn Sie eine verschachtelte Vorlage verwenden, dann müssen Sie dies durch passieren.

<h1>New thing</h1> 
<%= render "form.html", changeset: @changeset, 
         action: thing_path(@conn, :create), 
         company: assigns[:company] %> 
+5

Das Ideal ist jedoch in der Gesellschaft Variable passieren Auch wenn es sei nichts. Es wird eine Menge Indrektion vermeiden. –

+0

@ JoséValim Das ist ein guter Punkt - ich werde der Antwort eine Notiz hinzufügen. – Gazler

Verwandte Themen