我正在使用 Rails 3。我正在尝试在助手中执行此操作:
def headers collection
collection.each do |col|
content_tag(:th, col.short_name)
end
end
如您所见,其想法是通过 content_tag 生成 <th>
集合中每个元素的标签。这不起作用,因为 HTML 是由 Rails 保证安全的,这使得它不能像 HTML 一样工作。
如果我把它改成这样:
def headers collection
collection.each do |col|
concat (content_tag(:th, col.short_name))
end
end
这样效果更好。我得到了正确的 HTML 标记,但在此之前我得到了所有 HTML 安全标记。所以我想我已经很接近了。
我知道还有其他方法可以做到这一点,但我想尝试以正确优雅的方式做到这一点。我错过了什么?
最佳答案
您可以使用注入(inject)并以 html_safe 空字符串开始。
def headers collection
collection.inject("".html_safe) do |content, col|
content + (content_tag(:th, col.short_name))
end
end
关于ruby-on-rails - content_tag 使用 concat 处理多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117466/