我在帮助程序中有以下代码:
arr = ['one', 'two', 'three']
errors = content_tag :ul do
arr.map do |msg|
content_tag :li, msg
end.join.html_safe
end
它工作正常,但在第一个版本中我尝试each
而不是map
它没有工作。谁能解释我为什么?(each
刚刚生成的版本<ul>onetwothree</ul>
)
我在帮助程序中有以下代码:
arr = ['one', 'two', 'three']
errors = content_tag :ul do
arr.map do |msg|
content_tag :li, msg
end.join.html_safe
end
它工作正常,但在第一个版本中我尝试each
而不是map
它没有工作。谁能解释我为什么?(each
刚刚生成的版本<ul>onetwothree</ul>
)
这是因为Array#each
返回调用它的接收器本身。但是Array#map
返回一个包含块返回值的新数组。
arr = ['one', 'two', 'three']
arr.each {|i| i + 'weak' }.join(" ") # "one two three"
arr.map {|i| i + 'weak' }.join(" ") #"oneweak twoweak threeweak"