0

私のグーグル円グラフコードは

var data = google.visualization.arrayToDataTable([
          ['Task', 'Hours per Day'],
          ["Work",     50],
          ["Eat",      20],
          ["Commute",  20],
          ["Watch TV", 5],
          ["Sleep",    5]
        ]);

そして私のコードは(<%= @datas.map { |d| [d.name, d.value] }.inspect %>) 結果を与えるものです

([["apple", "10"], ["orange", 20], ["banana", 30], ["grapes", 80], ["papaya", 44]])

この結果をこのように直接グーグル円グラフコードに入れると

  var data = google.visualization.arrayToDataTable([["apple", "10"], ["orange", 20], ["banana", 30], ["grapes", 80], ["papaya", 44]])

その後、それは完全に動作します。しかし、直接維持する

var data = google.visualization.arrayToDataTable(<%= @datas.map { |d| [d.name, d.value] }.inspect %>)

動作しません。この背後にある理由は何でしょうか。ルビーコードには、内部に保持するためのギ酸塩がありますか、それとも私が間違っているところですか?

4

3 に答える 3

1

これは役に立ちますか:

@datas = {:apple => 10, :orange => 20, :banana => 30}
@datas.map { |name, value| [name.to_s, value] }
# => [["apple", 10], ["orange", 20], ["banana", 30]] 

したがって、次のように書き出します。<%= @ datas.map {| name、value | [name.to_s、value]}%>

于 2012-12-05T09:28:09.807 に答える
1

どうですか

(<%= @datas.map { |d| [d.name, d.value] }.to_json.html_safe -%>)
于 2012-12-05T08:44:30.003 に答える
-1

あなたはこれを試してください..これに従ってコードを変更してください

 var data = google.visualization.arrayToDataTable(<%= make_a_chart %>);

対応するヘルパーのどこかに配置します。

 def make_a_chart
  result = []
  result.push make_labels, 
          make_data( 0, "zerohour" ), 
          make_data( 3, "threehours" ),
          make_data( 6, "sixhours" ),
          make_data( 9, "ninehours" ),
          make_data( 12, "twelvehours" )
          return result
          end

  def make_labels
     y = ["Time"]
     for task in Task.all do
     y.append task.name
     end
     return y
  end

 def make_data( time, completeness )
    y = Task.first.created_at + time
      for task in Task.all do
      y.append task[completeness]
   end
 return y
 end
于 2012-12-05T08:34:41.883 に答える