Javascript rails应用程序中的惰性高图表错误

Javascript rails应用程序中的惰性高图表错误,javascript,jquery,ruby-on-rails,ruby,highcharts,Javascript,Jquery,Ruby On Rails,Ruby,Highcharts,免责声明:我完全是一个试图自学rails=)的傻瓜 当我试图通过惰性high chart gem访问本应显示图表的页面时,我的web应用程序产生以下错误: undefined method `html_options' for nil:NilClass 并突出显示下面的HighChart代码 def high_chart(placeholder, object, &block) object.html_options.merge!({:id => placeholder})

免责声明:我完全是一个试图自学rails=)的傻瓜

当我试图通过惰性high chart gem访问本应显示图表的页面时,我的web应用程序产生以下错误:

undefined method `html_options' for nil:NilClass
并突出显示下面的HighChart代码

def high_chart(placeholder, object, &block)
  object.html_options.merge!({:id => placeholder})
  object.options[:chart][:renderTo] = placeholder
  high_graph(placeholder, object, &block).concat(content_tag("div", "", object.html_options))
end
相关文件:

控制器(application\u Controller.rb)

Gemfile包含jquery rails 4.0.3和lazy_high_图表1.5.4

我还运行了一个安装程序来添加所有的highcharts.js、mootools-adapter.js、exporting.js等等。。。将文件放入我的供应商/assets/javascripts/highcharts文件夹。之后我还运行了
bundle安装

我猜我的
@chart
可能存在某种继承问题,因为存在
nil:NilClass
错误,但我在网上找不到有关此问题的任何内容,并且尝试了不同的highchart示例,但得到了相同的错误


如果需要添加更多信息/说明,请提前通知我。处理请求的控制器操作没有分配
@chart
实例变量。好的,我通过从控制器中删除def-graph方法并将视图中的chart定义为常规变量而不是实例来实现它变量然而,这并不是将风格与内容分开的理想方式。我想我只是对控制器中的赋值感到困惑,因为我认为变量是在视图和控制器之间共享的,我真的不知道在控制器中还能做什么,因为我只需要一个图表变量来传递给High chart函数。如果模板是dashboard.html.erb,控制器中应具有相应的
仪表板
操作(方法);这就是您需要分配的位置
@chart
。如果要从其他操作呈现仪表板模板,然后在那里分配
@chart
。处理请求的控制器操作没有分配
@chart
实例变量。好的,我通过从控制器中删除def-graph方法并将视图中的图表定义为常规变量而不是实例变量来实现它。然而,这并不是将风格与内容分开的理想方式。我想我只是对控制器中的赋值感到困惑,因为我认为变量是在视图和控制器之间共享的,我真的不知道在控制器中还能做什么,因为我只需要一个图表变量来传递给High chart函数。如果模板是dashboard.html.erb,控制器中应具有相应的
仪表板
操作(方法);这就是您需要分配的位置
@chart
。如果要从其他操作呈现仪表板模板,然后在那里分配
@chart
。处理请求的控制器操作没有分配
@chart
实例变量。好的,我通过从控制器中删除def-graph方法并将视图中的图表定义为常规变量而不是实例变量来实现它。然而,这并不是将风格与内容分开的理想方式。我想我只是对控制器中的赋值感到困惑,因为我认为变量是在视图和控制器之间共享的,我真的不知道在控制器中还能做什么,因为我只需要一个图表变量来传递给High chart函数。如果模板是dashboard.html.erb,控制器中应具有相应的
仪表板
操作(方法);这就是您需要分配的位置
@chart
。如果要从其他操作呈现仪表板模板,请在此处指定
@chart
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  include SessionsHelper

  def graph_orders
    @chart = LazyHighCharts::HighChart.new('graph') do |f|
      f.title(:text => "Population vs GDP For 5 Big Countries [2009]")
      f.xAxis(:categories => ["United States", "Japan", "China", "Germany", "France"])
      f.series(:name => "GDP in Billions", :yAxis => 0, :data => [14119, 5068, 4985, 3339, 2656])
      f.series(:name => "Population in Millions", :yAxis => 1, :data => [310, 127, 1340, 81, 65])

      f.yAxis [
        {:title => {:text => "GDP in Billions", :margin => 70} },
        {:title => {:text => "Population in Millions"}, :opposite => true},
      ]

      f.legend(:align => 'right', :verticalAlign => 'top', :y => 75, :x => -50, :layout => 'vertical',)
      f.chart({:defaultSeriesType=>"column"})
    end
  end
.
.
.      
end
<% provide(:title, "Dashboard") %>
<h1>Dashboard</h1>
<div>
<%= high_chart("orders_chart", @chart) %>
</div>
.
.
.
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require_tree .
//= require highcharts/highstock
//= require highcharts/highcharts                                                        
//= require highcharts/highcharts-more