Ruby on rails rails 3:如何将数字连接到符号?

Ruby on rails rails 3:如何将数字连接到符号?,ruby-on-rails,ruby,string,recursion,Ruby On Rails,Ruby,String,Recursion,我希望通过使用1..5循环中的I将@comment1更改为@comment2。我有以下代码,这是相当重复。我希望把它擦干 嗨,我正在使用acts_作为带线程的可注释_。我基本上是在循环浏览所有评论,并检查该评论是否有孩子。如果是,请打印出孩子,同时检查这些孩子是否有孩子。因此,我计划深入几层,因此@comment1、2、3等等……我该如何干燥?递归是如何实现的?如果没有,我可能会深入几层,在@comment5处结束注释缩进 编辑 谢谢你,萨米隆 这里是更新的帮助函数 def show_c

我希望通过使用1..5循环中的
I
@comment1
更改为
@comment2
。我有以下代码,这是相当重复。我希望把它擦干

嗨,我正在使用acts_作为带线程的可注释_。我基本上是在循环浏览所有评论,并检查该评论是否有孩子。如果是,请打印出孩子,同时检查这些孩子是否有孩子。因此,我计划深入几层,因此@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
def显示带有子项的注释(注释)
评论。每个人都做评论|
让步评论
如果有什么评论?
海螺

您可能正在寻找
实例变量集

# Following snippet is not TESTED. It is here to just demonstrate "instance_variable_set"
<%(1..5).each do |i| %>
  <% instance_variable_set("@comment#{i}", comment.children) %>
  <% for comment in instance_variable_get("@comment#{i}") %>
    <%= render "comment_replies", :comment => comment %>
  <% end %>
<% end %>
并在助手函数中添加此助手函数
show\u comments\u with\u children
。那将是

def show_comments_with_children(comments, level)
   comments.each do |comment|
       yield comment, level
       if comment.children.any?
           show_comments_with_children(comment.children, level+1) {|x, l| yield x, l} #Dont worry, this will not run another query :)
       end
   end
end

您可能正在查找
实例变量集

# Following snippet is not TESTED. It is here to just demonstrate "instance_variable_set"
<%(1..5).each do |i| %>
  <% instance_variable_set("@comment#{i}", comment.children) %>
  <% for comment in instance_variable_get("@comment#{i}") %>
    <%= render "comment_replies", :comment => comment %>
  <% end %>
<% end %>
并在助手函数中添加此助手函数
show\u comments\u with\u children
。那将是

def show_comments_with_children(comments, level)
   comments.each do |comment|
       yield comment, level
       if comment.children.any?
           show_comments_with_children(comment.children, level+1) {|x, l| yield x, l} #Dont worry, this will not run another query :)
       end
   end
end

<>你定义这个代码的庄园很差,你应该考虑将<代码> @注释<代码>作为一个数组而不是作为每个变量的独立变量> @注释1,@评论2,等等。< /代码> < /P> 也就是说,您要查找的是
实例变量\u get()
方法

<(1..5).each do |i| %>
  <% instance_variable_set("@comment#{i}", comment.children) %>
  <% for comment in instance_variable_get("@comment#{i}") %>
    <%= render "comment_replies", :comment => comment %>
  <% end %>
<% end %>

评论%>

这肯定是一件很好的事情,但在本例中,我强烈建议您将注释实例变量转换为数组

> P>你定义这个代码的庄园相当差,你应该考虑将<代码> @注释<代码>作为数组而不是作为每个变量的独立变量> @注释1,@评论2,等等。< /代码> < /P> 也就是说,您要查找的是
实例变量\u get()
方法

<(1..5).each do |i| %>
  <% instance_variable_set("@comment#{i}", comment.children) %>
  <% for comment in instance_variable_get("@comment#{i}") %>
    <%= render "comment_replies", :comment => comment %>
  <% end %>
<% end %>

评论%>

这肯定是一件很好的事情,但在本例中,我强烈建议您将注释实例变量转换为数组

你能详细解释一下你所说的“
@comment1
使用
i
更改为
@comment2
”是什么意思吗?我的观点有很多重复的代码,我正试图把事情弄干。我正在打印线程评论。我认为这是重复的…这是一个代码气味,如果你有一系列IVAR用于相同的目的,你应该考虑使用一个哈希或数组。这个代码不是8次打印同一个东西吗?也许它不是真正的代码。你能详细说明你的意思吗?“
@comment1
使用
i
“?我的观点有很多重复的代码,我正试图把事情干掉。我正在打印线程评论。我认为这是重复的…这是一个代码气味,如果你有一系列IVAR用于相同的目的,你应该考虑使用一个哈希或数组。这个代码不是打印相同的东西8次吗?也许它不是真正的代码。收益不正常工作。事实上,这个区块需要通过。我会很快带着正确的代码回来。更新。。。希望现在它能像预期的那样工作。让我们知道状态:)嗨,代码工作,我真的很感谢!我有一个小问题,我似乎无法解决。我可以在何处插入此div“”。此div将封装子项,然后在没有更多子项时结束div。我认为它应该属于helper。如果它总是
,那么您的代码应该可以工作。它似乎已经附上了你的孩子的评论。但是,通过
concat'.html\u safe
,它可以稍微干净一点。但是如果不是,那么请添加您想要作为输出的确切html。产量不能正常工作。事实上,这个区块需要通过。我会很快带着正确的代码回来。更新。。。希望现在它能像预期的那样工作。让我们知道状态:)嗨,代码工作,我真的很感谢!我有一个小问题,我似乎无法解决。我可以在何处插入此div“”。此div将封装子项,然后在没有更多子项时结束div。我认为它应该属于helper。如果它总是
,那么您的代码应该可以工作。它似乎已经附上了你的孩子的评论。但是,通过
concat'.html\u safe
,它可以稍微干净一点。但如果不是,请添加您想要作为输出的确切html。