RABL将ActiveRecord时间戳或日期时间呈现为数字而不是字符串

时间:2012-09-26 01:57:44

标签: ruby-on-rails json sinatra rabl

我目前正在从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"}

1 个答案:

答案 0 :(得分:4)

 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对象的顶部”。