【发布时间】:2011-06-07 20:36:15
【问题描述】:
我正在尝试一个辅助方法,它会输出一个项目列表,这样调用:
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 应该以某种方式在块模式下使用集合。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 helper block