2010-11-17 6 views
0

Ich möchte eine Hilfsmethode schreiben, um eine Liste von Optionsfeldern zu drucken. Der offensichtliche Weg, dies zu tun, ist, dass die Hilfsmethode eine Zeichenfolge von HTML-Code zurückgibt, damit meine Ansichtsdatei gerendert wird.Schienen: Auf Seite drucken, nicht zur Konsole?

Aber das ist einfach nicht schön, <li> nach <li> an eine Zeichenfolge anzufügen und dann zurück.

Der Code wäre natürlich lesbarer, wenn ich nur jede Zeile von HTML wiederum drucken könnte. Kann ich Zeilen in einen Ausgabestream drucken, sodass sie auf meiner Seite landen (nicht auf der Serverkonsole)?

(Ich bin mit Schienen 2.3.5, btw.)

Antwort

1

Sie können durch Aufruf content_tag eine Liste in einem Hilfsmethode aufbauen und in dem gewünschten Elemente passiert, und einen Block, der einige HTML (wie die rendert radio_button Helfer), dann fügt man das ganze Chaos in eine Zeichenfolge, zB (Luft Code):

module SomeHelper 
    def radio_button_list(things) 
    things.collect do |thing| 
     content_tag(:li) { radio_button(thing.foo, thing.bar, thing.baz) } 
    end.join 
    end 
end 
+0

Am besten ist es Praxis concat um den content_tag hier zu verwenden, anstatt 'join' am Ende. Dies ist besonders hilfreich, wenn Sie mehrere Ebenen der Verschachtelung haben. –

+0

Danke, gebührend zur Kenntnis genommen. – zetetic

+0

Ich hatte überlegt, eine lange Zeichenfolge zu verketten und dann auf die Seite auszugeben. Es fehlt die Sauberkeit, die ich mir erhofft hatte, aber ich nehme an, es gibt nichts anderes. Vielen Dank. – JellicleCat