首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >morris.js图形未呈现

morris.js图形未呈现
EN

Stack Overflow用户
提问于 2017-12-12 09:15:11
回答 2查看 613关注 0票数 0

我似乎无法使用coffeescript在rails中运行morris.js图形。它甚至看起来都没有呈现在页面上。我已经设法获得了图形渲染教程,这让我相信这是我的控制器的问题(以及我的gem文件等被正确加载),但我完全迷惑了。我的控制台输出如下:

Coffeescript

代码语言:javascript
复制
jQuery ->
      $.get '/scores/index.json', (data) ->
        Morris.Line
          element: $('#myfirstchart')
          data: data
          xkey: 'created_at'
          ykeys: ['scores']
          labels: ['Score']

index.html.erb

代码语言:javascript
复制
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>

<div id="myfirstchart" style="border:2px solid red; height: 200px; width: 100%"></div>

scores_controller.rb

代码语言:javascript
复制
def index
    respond_to do |format|
      format.html {
        # Display current users scores in the order of created at descending from most recent. Taking the last 5 scores
        @scores = Score.all
      }
      format.json {
        scores = Score.all
        render :json => scores
      }
    end

  end

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2017-12-12 10:51:55

根据文档,<script>标记应该在<head>部分内。在你的application.html.erb

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
   <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
   <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
   <script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
   <script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
   <!-- other Rails imports -->
</head>

<body>
  <%= yield %>
</body>
</html>

有关示例,请参阅jQuery Get Started

票数 0
EN

Stack Overflow用户

发布于 2017-12-12 11:16:18

我有这个问题。修复方法是将我想要的记录放到一个helper中,然后在JS中调用它以在视图中呈现。让你的助手以Morris要求的方式显示数据,这样你就会做得很好。

在帮助器内部:

代码语言:javascript
复制
def chart_data
        (1.month.ago.to_date..Date.today).map do |date|
        {
            period: date,
            score: Score.where("date(created_at) = ?", date).count,
        }
        end
    end

在您的视图中:

代码语言:javascript
复制
<%= content_tag :div, "", style: "height: 205px", id: "scores-morris", data: {scores: chart_data} %>

最后添加您的js/coffee脚本。这是咖啡:

代码语言:javascript
复制
$ ->
  Morris.Line
    element: 'scores-morris'
    data: $('#scores-morris').data('scores')
    xkey: 'period'
    ykeys: [ 'score' ]
    labels: [ 'SCORE!!!' ]
    hideHover: [ 'auto' ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47763972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档