Я использую метод рендера Rails для передачи рендеринга json во внешний интерфейс AngularJS. Даты были успешно пройдены. Когда я пытаюсь puts
в бэкэнде, визуализированный объект json также имеет правильное время. Но почему-то все время становится 00:00:00 во внешнем интерфейсе.
Код в бэкенде Rails:
... // a lot of other stuff
respond_to do |format|
format.json do
render json: @entries
end
end
Код в интерфейсе AngularJS:
XXX.query(params).then((response) => {
console.log(response);
...
// a lot of other stuff
}
Часть ответа, напечатанная в бэкэнде:
[{"id":101752,"version":1,"date":"2018-06-01T00:00:00.000Z","date_created":"2018-06-02T01:56:44.000Z","last_updated":"2018-06-02T01:56:44.000Z"},{"date":"2018-06-04T00:00:00.000Z","date_created":"2018-06-05T03:36:14.000Z","last_updated":"2018-06-05T03:36:14.000Z"}]
Вы можете видеть, что все временные метки имеют время (за исключением «даты», где для времени должно быть только 00:00:00). Однако, когда он достигает внешнего интерфейса, все временные метки становятся просто 00:00:00.
Часть ответа, напечатанная во внешнем интерфейсе:
Интерфейс ответа JSON print out.png
Прямо сейчас единственный способ, который я знаю, чтобы исправить это, это добавить функцию в сериализатор для каждой временной метки, используя strftime (). Он преобразует метки времени в строки, прежде чем они будут преобразованы в JSON. Но это было бы ОЧЕНЬ неэффективно, поскольку мне нужно добавить функцию strftime () для каждого сериализатора для каждой временной метки. У кого-нибудь есть лучшее решение? Кроме того, кто-нибудь знает, что на самом деле происходит с методом рельсов и метками времени?