我在帮助程序中有以下代码:
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"