【问题标题】:RABL renders ActiveRecord timestamps or datetimes as numbers instead of stringsRABL 将 ActiveRecord 时间戳或日期时间呈现为数字而不是字符串
【发布时间】:2012-09-26 01:57:44
【问题描述】:

我目前正在从 ActiveRecord 的 as_json 切换到 RABL 以生成 API。

as_json 一直在我的模型中将时间戳呈现为2012-09-16T22:14:11+00:00 格式的字符串。然而,当我切换到 RABL 时间戳开始呈现为像 1347926218.084763000 这样的纪元数字(注意这些日期来自两个不同的对象,并且不应该相等)。有没有办法强制字符串格式?

我的 .rabl 模板非常简单:

object @person
attributes :id, :created_on, :name

我得到:

{"id":3,"created_on":1347926218.084763000,"name":"fred"}

【问题讨论】:

    标签: ruby-on-rails json sinatra rabl


    【解决方案1】:
     object @person
       node(:id){|person|(person.id)}
       node(:created_on){|person|(person.created_on.strftime(%d,%m,%Y)}
       node(:name){|person|(person.name)}
     end
    

    或者试试

     object @person
       attributes :id, :name
       node(:created_on){|person|(person.created_on.strftime(%d,%m,%Y)}
     end
    

    您可以在许多网站上找到更多关于 .strftime() 的选项。它必须用于 :date 对象类型。您可以使用其选项自定义日期输出。我正在为一些 json 输出开发自定义节点,并且正在努力学习这一点!

    如果您需要按特定顺序的属性,我会使用带有节点的属性,因为属性似乎“浮动到创建的 json 对象的顶部”。

    【讨论】:

    • 啊,这很酷。我希望它开箱即用,但这似乎是一个很好的替代品。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 2019-07-30
    • 2017-07-02
    • 2011-05-05
    • 2021-06-27
    • 1970-01-01
    • 2022-08-18
    • 2022-01-03
    相关资源
    最近更新 更多