2016-12-14 5 views
0

Ich möchte meine teilweise unterhalb der classy Klasse von ihm wird durch Einheimische injiziert werden, aber ich bekomme immer undefined Methode für nobel.Injective lokale Variablen in Schienen teilweise

// Ansicht

<%= render layout: "layouts/partial", locals: {className: "classy"} do %> 
... 
<% end> 

// Teil

<div class="regular-div <%=className if className?%>"></div> 
+0

Was meinen Sie? Sie übergeben die lokale Variable 'className' und verweisen auf' className'. Sind Sie sicher, dass dies nicht nur ein Tippfehler oder ein schlampiger Fehler ist? – max

+0

'className' kommt nicht in die partielle als" classy ". Ich möchte, dass mein div die Klasse "classy" bekommt – stackjlei

+0

Es sollte '<% = className wenn local_assigns.has_key? (: ClassName)%>' sein. Da 'className' und' className? 'Nicht identisch sind. 'local_assigns.has_key? (: className)' ist eine Möglichkeit, sicher zu prüfen, ob die lokale Variable gesetzt ist. – max

Antwort

1

Um zu überprüfen, ob eine lokale Variable gesetzt Verwendung local_assigns.has_key?(:some_key) oder local_assigns[:some_key] sicher auf die lokale Variable zugreifen.

Eine raffinierte Weise die gemeinsame Aufgabe der Handhabung ist eine Liste von Klassen des Gebäudes:

module ApplicationHelper 
    # Takes an array or list of classes and returns a string 
    # Example: 
    # class_list('a', 'b', nil, 'c') 
    # => "a b" 
    # class_list(['a', 'b', nil, 'c']) 
    # => "a b c" 
    def class_list(*classes) 
    [*classes].flatten.compact.join(' ') 
    end 
end 

Dann können Sie tun:

<div class="<%= class_list('regular-div', local_assigns[:className]) %>"></div>