如何在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 %>
答案 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惯例。