Morris.js 不会在我的 rails 应用中绘制图形
Morris.js won't draw graph in my rails app
通过制作项目学习rails。尝试构建图表形式 @resource.prices 数据。一直在关注rails投一下吧。一切都按照显示的方式进行,但在这里没有结果。
这是我的咖啡脚本:
jQuery ->
Morris.Line
element: 'prices_chart'
data: $('#prices_chart').data('prices')
xkey: 'date'
ykeys: ['price']
labels: ['Price']
这是我的一段查看文件代码:
<%= content_tag :div, "", id: "prices_chart", data: {prices: @resource.prices} %>
这是@resource.prices.inspect 给出的结果:
#<ActiveRecord::Associations::CollectionProxy [
#<Price id: 5, resource_id: 8, price: 13, created_at: "2015-12-30 11:59:38", updated_at: "2015-12-30 11:59:38", date: "2015-01-07">,
#<Price id: 6, resource_id: 8, price: 14, created_at: "2015-12-30 11:59:53", updated_at: "2015-12-30 11:59:53", date: "2015-02-05">,
#<Price id: 7, resource_id: 8, price: 15, created_at: "2015-12-30 12:00:03", updated_at: "2015-12-30 12:00:03", date: "2015-03-26">,
...]>
正如我们所见,它同时包含价格和日期。但是图表仍然是空的。可能出了什么问题?数组末尾的三个点是什么?
UPD 指向 morris.js 的控制台出错:
Uncaught TypeError: Cannot read property 'match' of null
正如它所指出的,您传递数据的方式似乎有误,请检查 html 控制台中“#prices_chart”的 data-price
属性,您会看到类似于:"#<ActiveRecord::Associations..."
,它不是 JSON 数组,当然它不能工作。
针对您的情况的解决方法是将 @prices
作为 JSON 字符串传递:
<%= content_tag :div, "", id: "prices_chart", data: {prices: @resource.prices.to_json } %>
但是,更优雅的方法是使用 ajax 在 JSON
中获取数据
jQuery ->
$.ajax
url: # your api endpoint
data: # your data
success: (data) ->
Morris.Line
element: 'prices_chart'
data: data
xkey: 'date'
ykeys: ['price']
labels: ['Price']
由你选择最合适的方式,祝你好运!
通过制作项目学习rails。尝试构建图表形式 @resource.prices 数据。一直在关注rails投一下吧。一切都按照显示的方式进行,但在这里没有结果。
这是我的咖啡脚本:
jQuery ->
Morris.Line
element: 'prices_chart'
data: $('#prices_chart').data('prices')
xkey: 'date'
ykeys: ['price']
labels: ['Price']
这是我的一段查看文件代码:
<%= content_tag :div, "", id: "prices_chart", data: {prices: @resource.prices} %>
这是@resource.prices.inspect 给出的结果:
#<ActiveRecord::Associations::CollectionProxy [
#<Price id: 5, resource_id: 8, price: 13, created_at: "2015-12-30 11:59:38", updated_at: "2015-12-30 11:59:38", date: "2015-01-07">,
#<Price id: 6, resource_id: 8, price: 14, created_at: "2015-12-30 11:59:53", updated_at: "2015-12-30 11:59:53", date: "2015-02-05">,
#<Price id: 7, resource_id: 8, price: 15, created_at: "2015-12-30 12:00:03", updated_at: "2015-12-30 12:00:03", date: "2015-03-26">,
...]>
正如我们所见,它同时包含价格和日期。但是图表仍然是空的。可能出了什么问题?数组末尾的三个点是什么?
UPD 指向 morris.js 的控制台出错:
Uncaught TypeError: Cannot read property 'match' of null
正如它所指出的,您传递数据的方式似乎有误,请检查 html 控制台中“#prices_chart”的 data-price
属性,您会看到类似于:"#<ActiveRecord::Associations..."
,它不是 JSON 数组,当然它不能工作。
针对您的情况的解决方法是将 @prices
作为 JSON 字符串传递:
<%= content_tag :div, "", id: "prices_chart", data: {prices: @resource.prices.to_json } %>
但是,更优雅的方法是使用 ajax 在 JSON
中获取数据jQuery ->
$.ajax
url: # your api endpoint
data: # your data
success: (data) ->
Morris.Line
element: 'prices_chart'
data: data
xkey: 'date'
ykeys: ['price']
labels: ['Price']
由你选择最合适的方式,祝你好运!