Ich versuche, eine Hilfsmethode, die eine Liste von Elementen ausgegeben, wie so genannt werden:Loop & Ausgang content_tags innerhalb content_tag in Helfer
foo_list(['item_one', link_to('item_two', '#') ... ])
Ich habe die Helfer wie so geschrieben Using helpers in rails 3 to output html nach der Lektüre:
def foo_list items
content_tag :ul do
items.collect {|item| content_tag(:li, item)}
end
end
jedoch habe ich eine leere UL nur in diesem Fall erhalten, wenn ich dies als Test tun:
def foo_list items
content_tag :ul do
content_tag(:li, 'foo')
end
end
Ich bekomme die UL & LI wie erwartet.
Ich habe versucht, es ein bisschen herum Swapping tun:
def foo_list items
contents = items.map {|item| content_tag(:li, item)}
content_tag(:ul, contents)
end
In diesem Fall bekomme ich die ganze Liste, aber die LI-Tags sind HTML entkommen (obwohl die Saiten HTML sicher). Doing content_tag(:ul, contents.join("\n").html_safe)
funktioniert, aber es fühlt sich falsch an und ich fühle mich content_tag
sollte im Block-Modus mit einer Sammlung irgendwie funktionieren.
Das funktioniert, ich hatte versucht, die concat um das Sammeln zu machen, vorher eher als innerhalb. Mit concat innerhalb des proc wird dann collect nicht benötigt und Sie können items.each (oder andere Iteratoren) verwenden. – DEfusion
Auf diese Weise rufen Sie concat für jedes Element auf. Ich denke, dass es billiger wäre, items.collect {} zu machen. Join (""). Html_safe –