试图创建一个以数组作为属性的模型,我最终创建了一个像这样的哈希数组:
data1 = {}
data1[:name] = "Virtual Memory"
data1[:data] = @jobs.total_virtual_memory
data2 = {}
data2[:name] = "Memory"
data2[:data] = @jobs.total_memory
@data = []
@data << data1
@data << data2
这样填充@data:
[{:data=>[#<Job day: "2010-08-02">, #<Job day: "2010-08-04">], :name=>"Virtual Memory"}, {:data=>[#<Job day: "2010-08-02">, #<Job day: "2010-08-04">], :name=>"Memory"}]
但是我不知道如何在视图中访问这些变量。因此,如同以下一样运行:
for series in @data
series:name
for d in series:data
data:[Date, Value]
end
end
将返回以下内容:
Name1
Date1, Value1
Date2, Value 2,
Date3, Value 3,
Date4, Value 4,
Name2
Date1, Value 1,
Date2, Value 2,
Date3, Value 3,
Date4, Value 4,
答案 0 :(得分:1)
这应该有效:
<% for series in @data %>
<%= series[:name] %>
<% for d in series[:data] %>
<%= d.date %>, <%= d.value %>
<% end %>
<% end %>
但是,您可以考虑使用更合适的数据结构而不是散列。例如,结构。这看起来像这样:
# in lib/JobData.rb:
JobData = Struct.new(:name, :data)
# in the controller:
data1 = JobData.new("Virtual Memory", @jobs.total_virtual_memory)
data2 = JobData.new("Memory", @jobs.total_memory)
@data = [data1, data2]
# in the view:
<% for series in @data %>
<%= series.name %>
<% for d in series.data %>
<%= d.date %>, <%= d.value %>
<% end %>
<% end %>
作为一种风格点:我使用了for
,因为您使用了for
,但一般来说,使用each
代替它更为红宝石。
答案 1 :(得分:0)
以下是观点:
<% for d in @data %>
{ pointInterval: <%= 1.day * 1000 %>,
name:<%= "'#{d[:name]}'"%>,
pointStart: <%= 2.weeks.ago.at_midnight.to_i * 1000 %>,
data: [
<% for chart in d[:data] %>
<%= "'[#{chart.day.to_time(:utc).to_i * 1000}, #{chart.data_attribute}],'" %>
<% end %>
]
},
<% end %>
使用#{d [:name]}访问“name”键的值并使用d [:data]访问数组,然后循环遍历数组,就像它是任何普通数组一样