2016-07-11 6 views
0

私はエルブテンプレートindex.html.erbを持っています。これはhtmlページをレンダリングします。有効なjsonをHTML erbテンプレートのjavascriptに送信

index.html.erb内のjavascriptにデータを渡すために
data: [ 
    {x: 'Resolved', y: 0 }, 
    {x: 'Unresolved', y: 0 } 
] 

、私はこのようになりますスクリプトタグを持っています。ただし、このページには、リテラルJavaScriptのオブジェクトは、チャートをロードする予定で、その上のグラフは、があります。 chart_managerの

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

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

私はHTMLのERBテンプレート内のJavaScriptに適切なJSONを送信することができますどのように?

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

注二重引用符の代わりに単一引用符の使用:

+2

余分な引用符を削除します。 '" <%= @ chart_manager.bar%> "'は '<%= @ chart_manager.bar%>'になります。そうすれば、即座にデータを入手することができます。配列ではなく文字列として本当に必要な場合は、 ''<%= @ chart_manager.bar%>''で囲むか、JSON.stringify(data)を文字列にすることができます。 –

答えて

0

は、私はあなたのような何かを行うことができるはずだと思います。

関連する問題