我正在尝试一个帮助程序方法,该方法将输出项目列表,如下所示:
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
应该以某种方式在集合模式下工作。
最佳答案
尝试这个:
def foo_list items
content_tag :ul do
items.collect {|item| concat(content_tag(:li, item))}
end
end
关于ruby-on-rails - 在助手中的content_tag中循环并输出content_tags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4669523/