我在视图中使用foo
辅助函数:
<%= foo ["hello", "stack", "overflow"] %>
foo
定义如下:
def foo(arr)
result = ''
arr.each do |a|
result += content_tag(:div, a)
end
result
end
页面呈现:
<div>hello</div><div>stack</div><div>overflow</div>
但是,如果将foo
的定义更改为:
def foo(arr)
content_tag(:div, arr[0]) + content_tag(:div, arr[1]) + content_tag(:div, arr[2])
end
我得到了预期的结果:
hello
stack
overflow
您如何修复foo
上面的定义以获得预期结果? (即我不想让角色逃脱)
答案 0 :(得分:2)
试试这个:
def foo(arr)
result = ''
arr.each do |a|
result += content_tag(:div, a)
end
raw result
end
编辑。
为了更清楚,你正在创建一个字符串,Rails不知道它是否可以安全显示。 更准确地说,Rails对它创建的content_tags毫无疑问。
所以你可以解决你的问题告诉rails你的初始化字符串是安全的:
def foo(arr)
result = ''.html_safe
arr.each do |a|
result += content_tag(:div, a)
end
result
end