具有命名索引的Ruby Array对象

时间:2015-01-30 07:19:43

标签: ruby-on-rails ruby arrays

我正在尝试创建一个ruby数组,以便我可以保存一些数据并将其创建为JSON对象以存储到DATABASE中。

browser_meta = Array.new
        browser_meta.name = browser.name;
        browser_meta.version = browser.full_version;
        browser_meta.platform = browser.platform;
        browser_meta.name = browser.name;
        browser_meta.name = browser.name;

错误:

undefined method `name=' for []:Array

2 个答案:

答案 0 :(得分:4)

对于键值数据结构,数组是一个糟糕的选择。 请改用哈希:

browser_meta = { name: browser.name, version: browser.full_version .....}

然后你可以用

将它转换为json
require 'json'
browser_meta_json = browser_meta.to_json

答案 1 :(得分:1)

或者,如果您希望能够使用点表示法访问值:

http://www.ruby-doc.org/stdlib-2.0/libdoc/ostruct/rdoc/OpenStruct.html

require 'ostruct'

person = OpenStruct.new
person.name    = "John Smith"
person.age     = 70
person.pension = 300

puts person.name     # -> "John Smith"
puts person.age      # -> 70
puts person.address  # -> nil