/ / La data del grafico a linee di Morris si rifiuta di forzare la stringa nell'app rails - javascript, ruby-on-rails, morris.js

La data del grafico a linea di Morris si rifiuta di forzare la stringa nell'app rails - javascript, ruby-on-rails, morris.js

Sto cercando di rendere la data su una stringa che di solito usa un semplice

date.to_s

ma non funziona, ho provato a usare la coercizione stringa JavaScript.

String(date)

ma questo mi ha dato solo anni. Questo è il mio codice

<script>
Morris.Line({
element: "line",
data: [
<% metrics_history(current_user.oauth_token, "page_impressions", 30).each do |k,v|%>
{ date: String(<%= k%>) , value: <%= v %>},
<% end %>
],
xkey: "date",
ykeys: ["value"],
labels: ["Value"],
parseTime: false
});
</script>

Questo è ciò che restituisce. inserisci la descrizione dell'immagine qui

Totalmente bloccato qui.

I dati sono come questo nel browser

Morris.Line({
element: "line",
data: [
{ date: String(2015-06-18) , value: 0},
{ date: String(2015-06-19) , value: 0},
{ date: String(2015-06-20) , value: 1},
{ date: String(2015-06-21) , value: 0},
{ date: String(2015-06-22) , value: 23},
{ date: String(2015-06-23) , value: 0},
{ date: String(2015-06-24) , value: 11},
{ date: String(2015-06-25) , value: 1},
{ date: String(2015-06-26) , value: 36},
{ date: String(2015-06-27) , value: 41},
{ date: String(2015-06-28) , value: 1},
{ date: String(2015-06-29) , value: 11},
{ date: String(2015-06-30) , value: 44},
{ date: String(2015-07-01) , value: 0},
{ date: String(2015-07-02) , value: 35},
{ date: String(2015-07-03) , value: 0},
{ date: String(2015-07-04) , value: 0},
{ date: String(2015-07-05) , value: 26},
{ date: String(2015-07-06) , value: 68},
{ date: String(2015-07-07) , value: 88},
{ date: String(2015-07-08) , value: 10},
{ date: String(2015-07-09) , value: 0},
{ date: String(2015-07-10) , value: 0},
{ date: String(2015-07-11) , value: 201},
{ date: String(2015-07-12) , value: 0},
{ date: String(2015-07-13) , value: 0},
{ date: String(2015-07-14) , value: 10},
{ date: String(2015-07-15) , value: 0},
{ date: String(2015-07-16) , value: 0},
{ date: String(2015-07-17) , value: 0},
],
xkey: "date",
ykeys: ["value"],
labels: ["Value"],
parseTime: false
});

risposte:

1 per risposta № 1

Poiché le date non sono tra virgolette, Javascript le vede come numeri interi e quindi la sottrazione tra l'anno e il mese e la data. Nel modello, inserisci le virgolette sulla data:

 <% metrics_history(current_user.oauth_token, "page_impressions", 30).each do |k,v|%>
{ date: "<%= k%>" , value: <%= v %>},

0 per risposta № 2

Questo ha fatto il trucco

{ date: "<%= raw k%>" , value: <%= v %>}