使用AJAX在Rails中更新了动态ChartJS图表

ftshtw

我正在使用Rails 5和最新的ChartJS库(http://www.chartjs.org/docs/)。

我要完成的工作是从SensorReading模型中获取最新的20个项目,并使用setInterval和AJAX更新图表。

我建立了AJAX调用,并加载了图表,但在两件事上均失败了。

首先,从Rails读取数据时出现语法错误:

SyntaxError: expected expression, got '&'

var labels = ["2016-07-03 10:33:49 +0300", "2016-07-03 10:3

不管我尝试了什么,它们都会出现"而不是引号。

其次,我无法更新图表,因为我需要一个可供图表本身使用的处理程序,以对其上的.update()进行调用。

index.html.erb

<h1>Dashboard</h1>
<div class="ui divider"></div>

<div class="ui padded grid">
  <div class="four wide column">
    <div class="ui statistic">
      <div class="value">
        <%= @temperature %>.C
      </div>
      <div class="label">
        TEMPERATURE
      </div>
    </div>
    <br>
    <div class="ui statistic">
      <div class="value">
        <%= @humidity %>%
      </div>
      <div class="label">
        HUMIDITY
      </div>
    </div>
  </div>
  <div class="twelve wide column">
    <div class="ui segment">
      <div class="line-chart" style="max-height: 400px; display:block;">
        <canvas id="updating-chart"></canvas>
      </div>
    </div>
  </div>
</div>
<br>


<script>
var labels = <%= @sensor_readings.map(&:created_at) %>;

var canvas = document.getElementById('updating-chart'),
    ctx = canvas.getContext('2d'),
    startingData = {
      labels: labels,
      datasets: [
          {
              fillColor: "rgba(220,220,220,0.2)",
              strokeColor: "rgba(220,220,220,1)",
              pointColor: "rgba(220,220,220,1)",
              pointStrokeColor: "#fff",
              data: <%= @sensor_readings.map(&:temperature) %>
          },
          {
              fillColor: "rgba(151,187,205,0.2)",
              strokeColor: "rgba(151,187,205,1)",
              pointColor: "rgba(151,187,205,1)",
              pointStrokeColor: "#fff",
              data: <%= @sensor_readings.map(&:humidity) %>
          }
      ]
    },
    latestLabel = startingData.labels[6];

// Reduce the animation steps for demo clarity.
var myLiveChart = new Chart(ctx , {
    type: "line",
    data: startingData,
    animationSteps: 15
});

setInterval(function(){
  // Add two random numbers for each dataset
  //myLiveChart.data.datasets[0].data[2] = 50; // Would update the first dataset's value of 'March' to be 50
  myLiveChart.update(); // Calling update now animates the position of March from 90 to 50.
}, 5000);

</script>

dashboard.js

var ready = function(){

  setInterval(refreshSensorReadings, 3000);

  function refreshSensorReadings(){
    console.log("--> Called");
    $.rails.ajax({
      type: "GET",
      dataType: 'script',
      url: "/sensor_readings_chart_data.js",
      success: function(result){
        //$('.line-chart').html(result);
        console.log(result);
      }
    });
  };


};

$(document).on('turbolinks:load', ready);

路线

get 'sensor_readings_chart_data', to: 'sensor_readings#chart_data'

sensor_readings_controller.rb

def chart_data
    @sensor_readings = SensorReading.last(20)
    respond_to do |format|
      format.json { head :no_content }
      format.js  
    end
  end

任何建议将不胜感激。

绿色的

尝试html_safe方法:

将字符串标记为受信任的安全。它将被插入到HTML中,而无需执行其他转义操作。确保字符串不包含恶意内容是您的责任。此方法等效raw于视图中帮助器。建议您使用sanitize代替此方法。永远不要在用户输入上调用它

 datasets: [
      {
          fillColor: "rgba(220,220,220,0.2)",
          strokeColor: "rgba(220,220,220,1)",
          pointColor: "rgba(220,220,220,1)",
          pointStrokeColor: "#fff",
          data: <%= @sensor_readings.map(&:temperature).html_safe %>
      },
      {
          fillColor: "rgba(151,187,205,0.2)",
          strokeColor: "rgba(151,187,205,1)",
          pointColor: "rgba(151,187,205,1)",
          pointStrokeColor: "#fff",
          data: <%= @sensor_readings.map(&:humidity).html_safe %>
      }
  ]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用AJAX在Rails中更新了动态ChartJS图表

来自分类Dev

使用Javascript动态更新chartjs中图表的选项

来自分类Dev

如何使用 vue-chartjs 动态更新图表?

来自分类Dev

使用chartjs动态渲染图表

来自分类Dev

如何从动态创建的图表中获取ChartJs对象

来自分类Dev

使用Ajax在Rails中更新表数据

来自分类Dev

如何使用Ajax更新Rails中的Button

来自分类Dev

使用Ajax更新ERB中的Rails变量

来自分类Dev

在Rails中动态更新内容

来自分类Dev

使用AJAX动态更新数据库中的文本

来自分类Dev

如何使用动态更新图表添加地图弹出窗口

来自分类Dev

动态更新ChartJS之后的JavaScript

来自分类Dev

使用ajax,Rails,Coffeescript,jQuery更新列表中的记录

来自分类Dev

如何在Rails 4.0中使用Ajax更新提要

来自分类Dev

使用ajax,Rails,Coffeescript,jQuery更新列表中的记录

来自分类Dev

Excel图表的延迟动态更新

来自分类Dev

使用rails和ajax动态呈现内容。

来自分类Dev

使用ajax,rails渲染动态scss文件

来自分类Dev

使用AJAX结果动态更新Bootstrap Popover

来自分类Dev

使用Python Flask AJAX动态更新图像

来自分类Dev

更新使用Ajax动态添加的行

来自分类Dev

使用Python Flask AJAX动态更新图像

来自分类Dev

如何使用JSON中的动态数据使用Google图表

来自分类Dev

在chartJs中禁用或隐藏图表的YAix

来自分类Dev

图表标签未在chartjs中显示

来自分类Dev

ChartJS,更新图表类型不会正确更新 xAxis

来自分类Dev

Chartjs不会使用Requirejs呈现图表

来自分类Dev

在html表中使用图表中的动态数据

来自分类Dev

无法在vue-chartjs上动态呈现我的图表