我只是不想复制和粘贴。一定有更好的方法。
我有一个控制器,它使用单个模型将一些数据收集到两个数组中。然后我有一个在图中使用这些数组的单一视图(index.html.erb)。这很简单。这是整个视图。显然,来自控制器的数组是@buildStepArrays 和@buildDates。
<% chart = GChart.line(:title=>"Build Times", :size=>"1000x300", :data=>@buildStepArrays, :colors=>@colors, :legend=>@buildDates) %>
<% chart.axis(:left) %>
<%= image_tag chart.to_url %>
控制器在这里
def index
# These three arrays should be the same size
@buildStepArrays = []
@buildDates = []
@totalBuildTimes = []
@latestId = Env2.last().BuildId
@latestId = @latestId - 1
for buildNumber in (@latestId-4)..@latestId
@build = Env2.find_all_by_BuildId(buildNumber)
totalTime = 0
@currentBuildTimes = []
for step in @build
@currentBuildTimes << step.Minutes
totalTime += step.Minutes.to_i
end
@buildStepArrays << @currentBuildTimes.map { |e| e.nil? ? 0 : e }
@totalBuildTimes << totalTime
@buildDates << @build.last().Created
@colors = [["FF1300"], ["FF8C00"], ["FFFF00"], ["00CC00"], ["1240AB"]]
end
end
我想做的是从四个模型(四个不同数据库中的同一张表)中收集完全相同的数据,而不仅仅是一个,然后在视图上显示四个图表而不是一个。我对 Rails 知之甚少,不知道如何正确地做到这一点。我现在唯一的想法是将代码复制并粘贴到我的控制器中四次,然后更改变量名称。这太可怕了。我应该做些什么?