Estoy intentando hacer una página web para mostrar gráficos de líneas en mi aplicación Ruby on Rails 2.3.14. Encontré una herramienta, llamada JS Charts, que me permite crear buenos gráficos utilizando Javascript, pero tengo problemas para enviar los datos que necesita. Esta es la manera de hacer un gráfico de línea estática:Cómo paso una matriz de Ruby a Javascript para hacer un gráfico de líneas
<script type="text/javascript">
var myData = new Array([1, 395], [2, 244], [3, 223], [4, 210], [5, 238], [6, 223], [7, 275], [8, 31]);
var myChart = new JSChart('chartcontainer', 'line');
myChart.setDataArray(myData);
myChart.draw();
</script>
puse ese código en stats.html.erb, y se nota arriba. Sin embargo, lo necesito para mostrar datos de gráficos de líneas que le proporciono. A 2 matriz bidimensional se crea en el controlador:
>> @a
=> [[1, 395], [2, 244], [3, 223], [4, 210], [5, 238], [6, 223], [7, 275], [8, 31]]
yo debería ser capaz de utilizar esa variable en la vista, y establecer var myData
a ella, con algo como:
var myData = "<%= @a %>";
Probé otras cosas como:
var myData = JSON.parse("<%= @a.to_json %>");
pero nada parece funcionar. ¿Hay algo que pueda hacer?
EDIT:
Había un problema con la matriz de controlador pasa a la vista (@a), que estaba vacío. Pude utilizar:
var myData = JSON.parse("<%= @a.to_json %>");
para mostrar el gráfico de líneas con los datos correctos que se pasan a la vista.
Buena pregunta. No estoy seguro de por qué tus ejemplos no funcionan, suponiendo que estás en un archivo .erb y la interpolación de ruby puede funcionar. Tal vez intente interpolar a una cadena? IE '<%= @.to_s %>', porque el javascript va a evaluar qué ruby se inyecta en el script como si lo hubiera escrito ... – Andrew
@eric pegue el html generado de la página de resultados. – Abid
Espera, de alguna manera funcionó esta vez. Creo que hubo un problema con los datos que el controlador pasó a la vista ('@ a'). Usé 'JSON.parse (" <% = @ a.to_json%> ");'. Aprecio las respuestas al menos. – Eric