/ / Morris line graph date refuse de contraindre à la chaîne dans l'application rails - javascript, ruby-on-rails, morris.js

La date du graphique en lignes de Morris refuse de forcer à la chaîne dans l'application rails - javascript, ruby-on-rails, morris.js

J'essaie de faire de la date une chaîne qui utilise habituellement un simple

date.to_s

mais cela ne fonctionne pas, j’ai essayé d’utiliser la coercition sur les chaînes Javascript.

String(date)

mais cela m'a juste donné des années. Ceci est mon code.

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

C'est ce qu'il retourne. entrer la description de l'image ici

Totalement coincé ici.

Les données ressemblent à ceci dans le navigateur

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
});

Réponses:

1 pour la réponse № 1

Comme les dates ne sont pas entre guillemets, Javascript les considère comme des entiers, de même que la soustraction entre l'année et le mois et la date. Dans votre modèle, mettez les guillemets autour de la date:

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

0 pour la réponse № 2

Cela a fait le tour

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