从Rails 2.3.5升级到2.3后,获取NoMethodError({“name”=>“数据集1”,“值”=> [“”,“”]}:哈希)错误的未定义方法`name'。 11

时间:2012-07-11 14:46:32

标签: ruby-on-rails json hash upgrade slickgrid

升级到Rails 2.3.11后,我再也无法使用SlickGrid创建我们称之为数据集的内容。如果单击切换图标以创建数据集,我将获得以下堆栈跟踪:

NoMethodError (undefined method `name' for {"name"=>"Data Set 1", "values"=>["", ""]}:Hash):
  lib/slick_data.rb:99:in `to_data_json'
  lib/slick_data.rb:97:in `map'
  lib/slick_data.rb:97:in `to_data_json'
  app/controllers/data_sets_controller.rb:11:in `index'
  haml (3.0.22) lib/sass/plugin/rack.rb:41:in `call'
  airbrake (3.0.4) lib/airbrake/rack.rb:27:in `call'
  airbrake (3.0.4) lib/airbrake/user_informer.rb:12:in `call'
  /Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
  /Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
  /Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
  /Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:162:in `start'
  /Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
  /Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:95:in `start'
  /Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:92:in `each'
  /Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:92:in `start'
  /Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:23:in `start'
  /Users/jasonbodak/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/webrick/server.rb:82:in `start'

这是slick_data.rb中的'to_data_json'代码:

def to_data_json
  new_data = sanitized_data.map do |d|
    h = {}
    h['data_set_name'] = d.name
    j = 1
    d['values'].each do |v|
      h["var_#{j}"] = v
      j += 1
    end
    h
  end
  ActiveSupport::JSON.encode(new_data)
end

这是data_sets_controller.rb中'index'的代码:

def index # Ajax
  @scenario = Scenario.find(params[:scenario_id])
  sd = SlickData.new(@scenario.data_sets)
  render :json => {
    :html    => render_to_string(:layout => false, 
                                 :template => 'data_sets/index.html.erb', 
                                 :object => @scenario),
    :id      => @scenario.id,
    :data    => sd.to_data_json,
    :columns => sd.to_col_json,
  }
end

我是否需要升级我的json gem?我使用的是1.4.6。或者我可能需要升级我的SlickGrid版本?我使用的是1.4.3版。感谢。

1 个答案:

答案 0 :(得分:0)

没关系,我只需要在lib / slick_data.rb中将d.name更改为d['name']并修复错误。我想知道为什么在Rails 2.3.5之前它甚至可以工作?