2011-11-14 59 views
0

每個循環之後如何添加「0」,在Ruby中每個循環後(在數據:系列的一部分)如何添加「0」,在Ruby中

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 %> 

回答

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

這個邏輯似乎看起來太複雜了 - 我會將它遷移到一個幫助函數,它構建數據數組並調用它。

我認爲你會發現它很容易做到你想要的東西,而無需處理所有erb標籤的混亂等。有很多方法可以做到這一點--Yossi的建議使用each_with_index是一個非常好的一個。

雖然有兩件小事 - 我建議不要使用像@prot之類的縮寫名稱 - 只是將其稱爲@project_task。它更具可讀性,你可以保證你在整個代碼中稱它爲相同的東西(而不是有一些你稱之爲@prot的地方,其他地方是@ptask等),這會比你失去輸入更長的名字節省更多的時間,我保證您。

另外 - 你使用camelCase的一些變量 - 我會建議堅持使用Ruby約定的snake_case。