Javascript 生成JSON对象的Rails
我想在从数据库获取数据时生成一个JSON对象Javascript 生成JSON对象的Rails,javascript,jquery,ruby-on-rails,ruby,json,Javascript,Jquery,Ruby On Rails,Ruby,Json,我想在从数据库获取数据时生成一个JSON对象 def duration return @data[:duration] unless @data[:duration].nil? @data[:duration] = per_hour.collect do | val | [val[0], val[1]] end end 我得到了所需的数据,但数组不正确。我的观点是: var array = <%= raw @duration_data.to_json %>;
def duration
return @data[:duration] unless @data[:duration].nil?
@data[:duration] = per_hour.collect do | val |
[val[0], val[1]]
end
end
我得到了所需的数据,但数组不正确。我的观点是:
var array = <%= raw @duration_data.to_json %>;
但我需要的是:
var array = [{"data": {"0":0, "1":60.0} }];
您只需将数组转换为哈希:
@data[:duration] = per_hour.collect do |val|
[val[0], val[1]]
end.to_h
对于Ruby 1.9:
@data[:duration] = Hash[*per_hour.collect { |val| [val[0], val[1]] }]
您只需将数组转换为哈希:
@data[:duration] = per_hour.collect do |val|
[val[0], val[1]]
end.to_h
对于Ruby 1.9:
@data[:duration] = Hash[*per_hour.collect { |val| [val[0], val[1]] }]
我将这样写:
def duration
@data[:duration] ||= build_duration
end
这是一个简短的说法:返回@data[:duration]
如果不是nil,则为其指定构建持续时间
然后定义build\u持续时间
def build_duration
result = {}
per_hour.each do |val|
result[val[0]] = val[1]
end
result
end
您可以编写更紧凑的build\u duration
,但对我来说,这是非常可读的:它将构建一个散列并按照您的意愿填充它。我将这样写:
def duration
@data[:duration] ||= build_duration
end
@data[:duration] ||= per_hour.collect { | val | [val[0], val[1]] }.to_h
这是一个简短的说法:返回@data[:duration]
如果不是nil,则为其指定构建持续时间
然后定义build\u持续时间
def build_duration
result = {}
per_hour.each do |val|
result[val[0]] = val[1]
end
result
end
您可以编写更紧凑的build\u duration
,但对我来说,这是非常可读的:它将构建一个散列并按照您的意愿填充它
@data[:duration] ||= per_hour.collect { | val | [val[0], val[1]] }.to_h
试试这个
试试这个。我得到了这个错误:对于[[0,3]]我得到了这个错误:对于[[0,3]]我得到了这个错误:对于[[0,3]],这个数组应该返回pry(main)>[[0,3]]。对于[0,3]],这个数组应该返回pry(main)>[[0,3]]。谢谢,{code><0=>3},但是我在[[0,3]]的未定义方法“to_h”中遇到了这个错误:ArrayYou可能有一个旧的Ruby版本,我将更正答案我正在使用rails 2.1运行。这与rails无关,您需要检查您的Ruby版本。您可以在您的项目根目录中通过在控制台中键入ruby--version
来实现这一点,但是我在[[0,3]]的未定义方法“to_h”中遇到了此错误:ArrayYou可能有一个旧的ruby版本,我将更正答案否我正在运行rails 2.1这与rails无关,您需要检查您的ruby版本。您可以通过在控制台中键入ruby--version
在项目根目录中执行此操作