Как мне сопоставить мой массив хэшей для автозаполнения jquery? - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть этот рубиновый объект

options = [
  {"ActionScript"=>"orange"},
  {"AppleScript"=>"orange"},
  {"Asp"=>"red"},
  {"BASIC"=>"green"},
  {"C"=>"blue"},
  {"C++"=>"purple"},
  {"Clojure"=>"green"},
  {"COBOL"=>"red"},
  {"ColdFusion"=>"red"},
  {"Erlang"=>"green"},
  {"Fortran"=>"orange"},
  {"Groovy"=>"green"},
  {"Haskell"=>"green"},
  {"Java"=>"green"},
  {"JavaScript"=>"brown"},
  {"Lisp"=>"purple"},
  {"Perl"=>"blue"},
  {"PHP"=>"red"},
  {"Python"=>"green"},
  {"Ruby"=>"green"},
  {"Scala"=>"green"},
  {"Scheme"=>"orange"}
]

и я бы хотел, чтобы это было сопоставлено с:

[{"name":"ActionScript","value":"orange"},{"name":"AppleScript","value":"orange"}...]

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 24 февраля 2012
options.map do |option| 
  key, value = option.first
  {"name" => key, "value" => value} 
end # add .to_json if you want a JSON string

Также:

options.reduce(:merge).map { |k, v| {"name" => k, "value" => v} }
2 голосов
/ 24 февраля 2012
require 'json'

options.map {|elem| elem.map {|k,v| {:name => k, :value => v}}}.flatten.to_json
1 голос
/ 24 февраля 2012

Вы можете просто использовать метод to_json,

 require 'json' 
 options = options.map {|elem| elem.map {|k,v| {:name => k, :value => v}}}.flatten 
 js_options = options.to_json 
...