我正在尝试一个帮助方法,它将输出一个项目列表,如下所示:
foo_list( ['item_one', link_to( 'item_two', '#' ) ... ] )
Run Code Online (Sandbox Code Playgroud)
我在阅读了使用rails 3中的helper输出html之后,就像这样编写了帮助器:
def foo_list items
content_tag :ul do
items.collect {|item| content_tag(:li, item)}
end
end
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做,我只是在这种情况下得到一个空的UL:
def foo_list items
content_tag :ul do
content_tag(:li, 'foo')
end
end
Run Code Online (Sandbox Code Playgroud)
我按预期获得了UL和LI.
我已经尝试过将它交换一下:
def foo_list items
contents = items.map {|item| content_tag(:li, item)}
content_tag( :ul, contents )
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我得到整个列表,但LI标签是html转义(即使字符串是HTML安全).做的content_tag(:ul, contents.join("\n").html_safe )工作,但我感觉不对,我觉得content_tag应该以块模式与集合以某种方式工作.