В моем приложении Rails я делаю следующее, чтобы экспортировать все свои данные в виде строки JSON с помощью jbuilder:
index.json.jbuilder
json.array!(@react_exp) do |exp|
json.id(**INDEX HERE**)
json.createdAt((exp.created_at.to_f * 1000).to_i)
json.updatedAt((exp.updated_at.to_f * 1000).to_i)
json.extract! exp, :description
json.categoryId(exp.category_id)
json.extract! exp, :value
json.day(exp.day.strftime('%Q').to_i)
end
Пока это работает нормально. Я хочу добавить индекс каждого элемента, где написано УКАЗАТЕЛЬ ЗДЕСЬ (как идентификатор для полученного объекта).
Как я могу этого добиться?





Нет ничего нестандартного, но вы можете использовать метод Ruby each_with_index.
json.array! @react_exp.each_with_index do |exp, index|
json.id index
json.createdAt((exp.created_at.to_f * 1000).to_i)
json.updatedAt((exp.updated_at.to_f * 1000).to_i)
json.extract! exp, :description
json.categoryId(exp.category_id)
json.extract! exp, :value
json.day(exp.day.strftime('%Q').to_i)
end
Прочтите это Проблема с GitHub.
Мне нужно импортировать эти данные в базу данных firebase, и во время импорта в firebase он устанавливает ключ для каждого объекта, который в основном является индексом каждого элемента. Чтобы мое разрабатываемое мной приложение React работало правильно, мне нужен каждый ключ в качестве идентификатора в моем объекте. Этот подход кажется мне наиболее простым.
@ Оливер Понятно. Но насколько мне известно, Firebase создает ключ для каждой записи,
Вы можете даже исключить #to_a, поскольку методы ожидают, что что-то будет повторяться, а не конкретно массив.
Кроме того, я считаю, что первый уровень разрушения массива также может быть опущен. Первый уровень разрушения массива автоматически выполняется Ruby, когда каждый элемент является массивом. Таким образом, |(exp, index)| может быть просто |exp, index|.
Вопрос: Зачем вам
indexвместоid?