我正在尝试一个辅助方法,它将输出一个项目列表,像这样调用:
foo_list( ['item_one', link_to( 'item_two', '#' ) ... ] )
在阅读Using helpers in rails 3 to output html之后,我已经像这样编写了助手:
def foo_list items
content_tag :ul do
items.collect {|item| content_tag(:li, item)}
end
end
但是,如果我将其作为测试,那么在这种情况下我只会得到一个空的 UL:
def foo_list items
content_tag :ul do
content_tag(:li, 'foo')
end
end
我按预期获得了 UL 和 LI。
我已经尝试将它交换一下:
def foo_list items
contents = items.map {|item| content_tag(:li, item)}
content_tag( :ul, contents )
end
在那种情况下,我得到了整个列表,但 LI 标记是 html 转义的(即使字符串是 HTML 安全的)。做content_tag(:ul, contents.join("\n").html_safe )
的工作,但对我来说感觉不对,我觉得content_tag
应该以某种方式在块模式下使用集合。