4 Stimmen

Wie wird ein Symbol (z. B. :label) als Teil eines Parameter-Hashs verarbeitet?

Ich habe mir gerade den Beispielcode aus dem O'Reilly-Buch zu Ruby on Rails angesehen und bin über das hier gestolpert:

 def label_for(method, options={})
    extra = ""
    if options[:required]
      extra = " *"
    end
    label(:label || method) + extra + ""
  end

Ich verstehe, dass options ein Hash ist, aber wie kann es label nur mit :label aufrufen - müsste es nicht options[:label] sein?

Danke!

4voto

khelll Punkte 22794

Ja, das glaube ich schon, sonst wird das Symbol :label immer als Methode-Name an den label-Helfer übergeben.

1voto

Chirantan Punkte 14794

Es sollte options[:label] sein, es sei denn, der Autor hatte wirklich etwas anderes im Sinn. Denn :label || method wird immer :label zurückgeben, das dann an die Label-Methode übergeben wird.

1voto

Spasm Punkte 805

Sie haben recht.

label(options[:label] || methode) + extra + ""

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X