У меня есть шаблон для json с использованием драгоценного камня JB: index.json.jb
https://github.com/amatsuda/jb
Он выводит все настройки с некоторыми атрибутами для каждой записи.
В настройках также есть поле метаданных, которое является полем postgres jsonB. Я хотел бы перебрать содержимое полей метаданных и добавить его в свой шаблон json. Я перепробовал всевозможные способы и не могу понять, как это сделать.
json = {}
json[:settings] = @settings.map do |setting|
{
id: setting.id,
category: setting.category,
created_at: setting.created_at,
updated_at: setting.updated_at,
notes: setting.notes,
name: setting.full_name,
setting.metadata.map do |meta|
{
meta[0]: meta[1]
}
end
}
end
да. например, {"color_code" => "# 800080"} или {"code" => "AB", "English" => "Fir"}
Как это не удается? Разве это не сработает с SyntaxError? Строка setting.metadata.map не имеет такого ключа, как name:, для хеширования. Тогда я думаю, это никогда не сработает ...
Это объект / хэш, и вы не понимаете, почему вы думаете, что вам нужно его перебирать.
хорошая точка зрения! Я получаю синтаксическую ошибку: /index.json.jb:15: синтаксическая ошибка, неожиданный '\ n', ожидание => конец
@max - еще лучшая точка
Если вы хотите объединить два хэша, вы можете просто использовать .merge(other_hash)
Для этого я могу просто указать метаданные: setting.metadata - потому что это в любом случае хеш json. дох!





Что содержит
setting.metadata? Это массив пар или что-то в этом роде?