我想通过在 1..5 循环中使用@comment1
来更改。我有以下非常重复的代码。我希望把它晒干。@comment2
i
嗨,我正在使用acts_as_commentable_with_threading。我基本上循环浏览所有评论并检查该评论是否有孩子。如果是这样,打印出孩子,同时检查这些孩子是否有孩子。所以我计划深入几个层次,因此@comment1、2、3 等......我怎样才能干燥这个?递归一些如何?如果没有,我可能会更深入一些级别,例如在@comment5 处结束评论缩进。
编辑!
谢谢你萨米伦!
这是更新的辅助函数...
def show_comments_with_children(comments)
comments.each do |comment|
yield comment
if comment.children.any?
concat <<-EOF.html_safe
<div class="span7 offset1-1 pcomment">
EOF
show_comments_with_children(comment.children) { |x| yield x } #Dont worry, this will not run another query :)
concat <<-EOF.html_safe
</div>
EOF
end
end
end
<div class="span7 offset1-1 pcomment">
<% @comment1 = comment.children%>
<% for comment in @comment1 %>
<%= render "comment_replies", :comment => comment %>
<div class="span7 offset1-1 pcomment">
<% @comment2 = comment.children%>
<% for comment in @comment2 %>
<%= render "comment_replies", :comment => comment %>
<div class="span7 offset1-1 pcomment">
<% @comment3 = comment.children%>
<% for comment in @comment3 %>
<%= render "comment_replies", :comment => comment %>
<% end %>
</div>
……
<%(1..5).each do |i| %>
<% @comment1 = comment.children%>
<% for comment in @comment1 %>
<%= render "comment_replies", :comment => comment %>
<% end %>
<% end %>