我正在尝试使用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"}}]}
答案 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