我想忽略哈希树的第一个元素,因为它有不同的表示,只是映射所有元素减去第一个元素。这样我的递归函数就可以了。所以在我的comments.map循环中,我想忽略第一个元素或删除它。
def horizontal_tree_for(comments)
comments.map do |comment, nested_comments|
entry(comment) +
(nested_comments.size > 0 ?
content_tag(:div, horizontal_tree_for(nested_comments), class: "branch") +
"</div>"
: "</div>")
end.join.html_safe
end
def entry(comment)
"<div class='entry'><span class='label'> #{comment.name} </span>"
end
答案 0 :(得分:2)
替换
comments.map do |comment, nested_comments|
与
comments.drop(1).map do |comment, nested_comments|
致电
horizontal_tree_for(root_comments.drop(1))
并且不要更改方法中的任何内容。
答案 1 :(得分:1)
您有两个主要选择:
map
来自一个数组,该数组由给定散列的第一个键值对组成,然后对该数组进行操作;或假设
h = { :a=>1, :b=>2, :c=>3 }
@Eric提供了一种从散列派生的数组映射的好方法:
h.drop(1).map { |k,v| <your code> }
作为
h.drop(1)
#=> [[:b, 2], [:c, 3]]
构建新阵列:
h.each_with_index.with_object([]) do |((k,v),ndx),a|
next if ndx.zero?
a << <your code, using k and v>
end