生成JSON对象的Rails
Rails generating JSON Object
我想在从数据库获取数据时生成一个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]] }];
但我需要的是:
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]] }]
我会这样写:
def duration
@data[:duration] ||= build_duration
end
这是一个简短的说法:如果不是nil,则返回@data[:duration]
,否则,将build_duration
分配给它。
然后定义build_duration
def build_duration
result = {}
per_hour.each do |val|
result[val[0]] = val[1]
end
result
end
您可以编写更紧凑的build_duration
,但对我来说,这是非常可读的:它将构建一个哈希并根据您的意愿填充它。
@data[:duration] ||= per_hour.collect { | val | [val[0], val[1]] }.to_h
试试这个。
相关文章:
- Rails将JavaScript对象存储到Model的有效方式
- Rails 'nil' 不是与 ActiveModel 兼容的对象.它必须实现:to_partial_path.阿贾克斯
- Rails的问题,haml + javascript在字段对象的模糊
- 如何使用rails 3.1.4中的FormBuilder.new构建表单生成器对象
- Rails使用ajax调用更新多态对象的表部分
- Rails:如何将JS对象转换为数组参数
- Rails结构到JSON对象
- 访问Javascript中的Rails子对象
- 对象不支持此属性或方法 Rails Windows 64 位
- 一个 rails 字段,它是 JSON 对象的数组
- Rails JavaScript 包含 TypeError:“null”不是一个对象(评估 'document.
- “未定义”使用 Rails 对象传递数据属性
- Rails:如何使用 JavaScript 滑块显示 ActiveRecord 对象
- 使用jquery检查rails对象
- 如何在javascript中访问当前rails对象id
- 如何使用rails对象在选择下拉列表中设置选项的值's的id
- 将从sql数据库检索到的ruby on rails对象存储到javascript对象中
- 使用AJAX/Javascript创建Rails对象
- 你能调用Jbuilder来创建一个原生Rails对象而不是一个呈现的字符串吗?
- JSON对象转换为rails对象