JSON响应中的Hashmap

时间:2014-03-20 13:01:53

标签: ruby-on-rails ruby json

我正在尝试使用Ruby on Rails的翻译生成JSON响应。首选响应应如下:

{"localization":{"en" => {"title" => "Test"}, "nl" => {"title => "Test"}}}

我有一个翻译集合,其中包含模型的所有翻译。我尝试了以下但没有成功。

Ruby Hash:

{ localization: translations.map { |t| { t.locale => { title: t.title } }} }.to_json

这导致:

{"localization":[{"en":{"title":"Far far away"}},{"nl":{"title":"Ik ben makelaar"}}]}

2 个答案:

答案 0 :(得分:2)

尝试以下

{ 
  localization: Hash[translations.map{|t| [t.locale, {title: t.title}]}] 
}

答案 1 :(得分:0)

您可以在as_json中使用methods选项并创建自定义输出。像

在您的翻译课程中

class Translation < ActiveRecord::Base

 def localization
  {locale => {"title" => title}}
 end
end

通过

执行
Traslation.all.collect do |translation|

translation.as_json(only: [],methods: :localization)

end