nirvana wrote:
> => [#<Budget id: 1, country: "usa", year: "2000", amount: 15000>,
> #<Budget id: 2
> , country: "usa", year: "2001", amount: 1564>, #<Budget id: 3,
> country: "usa", y
> ear: "2002", amount: 6463>, #<Budget id: 4, country: "usa", year:
> "2003", amount
> : 150002>, #<Budget id: 5, country: "usa", year: "2004", amount:
> 5000>, #<Budget
> id: 6, country: "usa", year: "2005", amount: 4150>, #<Budget id: 7,
> country: "u
> sa", year: "2006", amount: 100>, #<Budget id: 8, country: "germany",
> year: "2000
> ", amount: 1000>, #<Budget id: 9, country: "germany", year: "2001",
> amount: 1526
> 4>, #<Budget id: 10, country: "germany", year: "2002", amount: 64633>,
> #<Budget
> id: 11, country: "germany", year: "2003", amount: 1502>, #<Budget id:
> 12, countr
> y: "germany", year: "2004", amount: 500>, #<Budget id: 13, country:
> "germany", y
> ear: "2005", amount: 450>, #<Budget id: 14, country: "germany", year:
> "2006", am
> ount: 10>, #<Budget id: 15, country: "britian", year: "2000", amount:
> 150>, #<Bu
> dget id: 16, country: "britian", year: "2001", amount: 15064>,
> #<Budget id: 17,
> country: "britian", year: "2002", amount: 663>, #<Budget id: 18,
> country: "briti
> an", year: "2003", amount: 2002>, #<Budget id: 19, country: "britian",
> year: "20
> 04", amount: 50000>, #<Budget id: 20, country: "britian", year:
> "2005", amount:
> 4150>, #<Budget id: 21, country: "britian", year: "2006", amount:
> 1000>]
require 'pp'
#pretty printer
class Budget
attr_reader :country, :year, :amount
def initialize(c, y, a)
@country, @year, @amount = c, y, a
end
end
arr = [
Budget.new("usa", "1989", 15000),
Budget.new("usa", "1964", 20000),
Budget.new("russia", "1999", 14000)
]
pp arr
--output:--
[#<Budget:0x8744c @amount=15000, @country="usa", @year="1989">,
#<Budget:0x873fc @amount=20000, @country="usa", @year="1964">,
#<Budget:0x873ac @amount=14000, @country="russia", @year="1999">]
hash = Hash.new {|hash, key| hash[key] = []}
#create a hash where acessing a non-existent key
#creates the key and assigns an empty array to it
arr.each do |budget|
hash[budget.country] << [budget.year.to_i, budget.amount]
end
p hash
--output:--
{"usa"=>[[1989, 15000], [1964, 20000]], "russia"=>[[1999, 14000]]}
str = "var datasets = {\n"
hash.each do |key, val|
fragment =<<ENDOFSTRING2
"#{key}": {
label: "#{key.upcase}",
data: #{val.inspect}
},
ENDOFSTRING2
str << fragment
end
#inspect produces the same output as p var
result = str[0..-3] + "\n}"
#gets rid comma(and newline) after last
#element, then adds the closing parenthesis
puts result
--output:--
var datasets = {
"usa": {
label: "USA",
data: [[1989, 15000], [1964, 20000]]
},
"russia": {
label: "RUSSIA",
data: [[1999, 14000]]
}
}
You'll have to manipulate the label to get the exact format you need.
Of course, you wouldn't put all that code in a view.
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---