2016-07-11 50 views
0

我有一個erb模板index.html.erb。這將呈現一個html頁面。然而,這個頁面也上有一個圖表,它期望一個JavaScript對象字面加載圖表:在html erb模板中發送有效的json to javascript

data: [ 
    {x: 'Resolved', y: 0 }, 
    {x: 'Unresolved', y: 0 } 
] 

爲了將數據傳遞到在JavaScript中index.html.erb,我有一個腳本標記,看起來像這樣:

<script> 
    $(document).ready(function(){ 
     var data = "<%= @chart_manager.bar %>" 
     console.log(data); 
    }) 
</script> 

chart_manager的bar方法只是返回JSON:

def bar 
    data = [] 

    data << { x: 'Open', y: tasks.open} 
    data << { x: 'Closed', y: tasks.closed } 

    data.to_json.html_safe 
    end 

然而,當網頁加載完畢後,我得到了CHRO錯誤我:

Uncaught SyntaxError: Unexpected identifier 

和瀏覽器顯示的數據看起來像這樣:

var data = "[{"x":"Unresolved","y":0},{"x":"Resolved","y":0}]" 

我如何發送正確的json的JavaScript的HTML ERB模板內?

+2

刪除多餘的引號。 '「<%= @ chart_manager.bar%>」'變成'<%= @ chart_manager.bar%>'。然後你會立即獲得你的數據。如果你真的需要它作爲一個字符串而不是一個數組,你可以用單引號''<%= @ chart_manager.bar%>''來包裝它,或者將其'JSON.stringify(data)'字符串化。 –

回答

0

我想你應該能夠做這樣的事情:

var data = JSON.parse('<%= @chart_manager.bar %>'); 

注意代替雙引號使用單引號。