Übergeben von block zu label Helfer in rails3
Erstellen Sie label-tag mit einigen verschachtelten Elementen. Ich bin mit Etikett Helfer und versucht, übergeben Sie innere html block, sondern generierte HTML-Code sieht nicht aus, als ich erwartet hatte.
ERB:
<span>Span element</span>
<%= label("object", "method") do %>
<span>Inner span</span>
<% end %>
HTML-Ausgabe:
<span>Span element</span>
<span>Inner span</span>
<label for="object_method">
<span>Span element</span>
<span>Inner span</span>
</label>
Wenn ich den pass inneren html mit <% %> Markierungen Ausgang ist, wie es sein sollte:
ERB:
<span>Span element</span>
<%= label("object", "method") do %>
<% raw '<span>Inner span</span>' %>
<% end %>
HTML-Ausgabe:
<span>Span element</span>
<label for="object_method">
<span>Inner span</span>
</label>
Frage ich mich, ob es mein Fehler oder Fehler im ActionView label Helfer. Für andere Helfer-block übergeben, funktioniert einwandfrei.
Dank,
Michał
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein Verständnis ist, dass Sie brauchen, um die Nutzung label_tag Helfer in diesem Fall:
Der Grund für dieses ist, dass, obwohl die form-label-Helfer füllt das Attribut "for" für Sie (mit Ihrem Modell-Objekt-Attribut), Sie brauchen es nicht mit verschachtelten Elementen.
Wenn Sie eine open-label-tag (eher als self-closing), umschließt den inneren Gehalt, die "for" - Attribut ist nicht notwendig, da das label offensichtlich in Zusammenhang mit seinem verschachtelten Inhalten (dies ist bekannt als implizite Vereinigung).
So, dies ist das erwartete Verhalten - es sieht aus wie das Rails-team haben die absichtlich gebaut, es auf diese Weise.
Scott Lowe ' s Antwort ist richtig, aber ich würde nehmen Sie es einen Schritt weiter... Sie brauchen noch nicht einmal zu verwenden, die Schienen label_tag für diese. Nur raw html etwa so:
Wenn Sie die Zuordnung des label-mit einem Formular-element (wie ein radio-button):
In Rails 3.2.11 das ist für mich arbeiten:
Ergebnis: