2012-12-05 79 views
0

我的谷歌餅圖代碼Ruby代碼不工作

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 %>) 

不起作用。這可能是背後的原因。紅寶石代碼有一些合作伙伴留在裏面或者我做錯了什麼?

回答

1

什麼

(<%= @datas.map { |d| [d.name, d.value] }.to_json.html_safe -%>) 
+0

我已經做了這個,但同樣的問題。我認爲這種格式有錯誤var data = google.visualization.arrayToDataTable(<%= @ datas.map {| d | [d.name,d.value]} .inspect%>)但是我不知道爲什麼,因爲這個代碼的輸出直接給出效果很好 – regmiprem

+0

@regmiprem對不起,我更新了我的答案。 – oldergod

+0

這也是行不通的。 – regmiprem

-1

你試試這個.. U符合本

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 
+0

我必須把裏面的紅寶石代碼與<%= %>否則我怎麼能得到價值? – regmiprem

+0

不需要檢查。刪除檢查 – vijikumar

+0

我已更新我的答案。用這個。 – vijikumar

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]}%>