0

string 型と int 型の 2D 配列を宣言するにはどうすればよいですか?

私はこのようなことをしたい

@products.each do |p|
   array = [p.title, p.price]
end

しかし、文字列をintに変換できないというエラーが表示されます

問題は、 f.series() を 1 回しか呼び出せず、すべてのデータを保持する配列が必要なことです。

f.series(:name => 'Product Sales', :data => array)

このコードに従って円グラフを作成しようとしています

https://github.com/bakongo/highcharts_plugin_sample_graphs/blob/master/app/controllers/graphs_controller.rb

def pie_chart
@categories = generate_categories(6)
@numbers = generate_numbers(6)
assoc = []
@categories.each_with_index {|c,i| assoc << [c, @numbers[i]]}

@highchart = HighChart.new('graph') do |f|
  f.title(:text => 'Flowers in Yard')
  f.options[:chart][:defaultSeriesType] = "pie"
  f.options[:x_axis][:categories] = @categories
  f.series(:type => 'pie', :name => 'Flower Presence', :data => assoc)
end

def generate_numbers(number)
   numbers = [rand(number)]
   (1...number).each_with_index {|v, i| numbers << (rand(number)+1)}
   numbers
end

def generate_categories(number)
   cats = ['Sunflower', 'Magnolia', "Rose", 'Lily', 'Tulip', 'Iris']
   cats[0...number]
end
4

1 に答える 1

2

ルビーでは、次のように単一の配列に異なるタイプの要素を保存できます

arr = [1, 1.0, "This is a String", {abc: pqr}, [6]]
#arr[0].class = Fixnum
#arr[1].class = Float
#arr[2].class = String
#arr[3].class = Hash
#arr[4].class = Array

したがって、次のように配列の配列を保存する場合

[["value1", 1.0], ["value2", 2.0]]

以下を使用

array = []
@products.each do |p|
  array << [p.title, p.price]
end

あるいは単に

array =  @products.collect{|p|  [p.title, p.price]}

2D 配列へのアクセスを表示するように編集

arr = [["value1", 1.0], ["value2", 2.0]]
#arr[0] = ["value1", 1.0] 
#arr[0][0] = "value1" 
#arr[0][1] = 1.0
#arr[1] = ["value2", 2.0]
#arr[1][0] = "value2" 
#arr[1][1] = 2.0
于 2012-10-06T07:40:00.043 に答える