如何在Ruby中的每个循环之后添加“0”

时间:2011-11-14 09:33:45

标签: ruby-on-rails ruby ruby-on-rails-3

如何在Ruby中的每个循环之后添加“0”(在数据:系列的一部分)

So first loop would 
show only the value 
next loop 0,value
next loop 0,0,value 
next loop 0,0,0,value
etc..




series: [
    <% @prot = ProjectTask.where("project_id = ? AND taskType = ?" ,@project.id, "Pre-Sales")%>
            <% @prot.each do |prt| %>
            <% hoursSum = 0 %>
          {
              name: '<%= prt.task_name%>',
              data: [(here after each loop of @prot i want to add "0," here)<% @taskHours = Effort.where(:project_task_id => prt.id) %>
                        <% @taskHours.each do |th| %>
                            <% hoursSum = hoursSum + th.hours %>
                        <% end %>
                        <%= hoursSum%>
              ]
          },<% end %>

2 个答案:

答案 0 :(得分:3)

<% @prot.each_with_index do |index, prt| %>
    ...
    <%= "0," * index %>
    ...
<% end %>

答案 1 :(得分:2)

这个逻辑似乎太复杂了,不能在视图中 - 我会将它迁移到一个帮助函数,它构建数据数组并调用它。

我认为你会发现做你想做的事情要容易得多,而不必处理erb标签的所有混乱。有很多方法你可以做到 - Yossi建议使用{{1}是一个非常好的人。

虽然有两件小事 - 我会建议像each_with_index这样的缩写名称 - 只需称它为@prot。它更具可读性,您可以保证在整个代码中将其称为相同的内容(而不是将其称为@project_task的某些地方,而不是@prot的其他地方),这将为您节省更多时间输掉一个更长的名字,我向你保证。

另外 - 你使用camelCase来表示你的一些变量 - 我建议坚持使用Ruby_case的Ruby惯例。