Rails json回应。 Int转换为日期

时间:2013-06-01 22:20:32

标签: ruby-on-rails ruby datetime

我有一个问题,在json中响应数据。 这是一个代码:

@data  [
            actions_by_type.each do |action|
              [ action[:date].to_i, action[:activity] ]
            end 
        ]
respond_to do |format|
      format.json { render :json => @data }
    end

但回应是:

...{"date":"2013-04-29T20:20:00Z","activity":"87"}...

为什么rails将我的int时间转换为字符串datetime?

2 个答案:

答案 0 :(得分:2)

x.each返回x,所以:

x = actions_by_type.each do |action|
  [ action[:date].to_i, action[:activity] ]
end

相当于:

x = actions_by_type

您想使用map代替each

@data = actions_by_type.map do |action|
  [ action[:date].to_i, action[:activity] ]
end 

答案 1 :(得分:2)

您应该使用.map代替.each

@data = actions_by_type.map do |action|
            [ action[:date].to_i, action[:activity] ]
        end 

respond_to do |format|
    format.json { render :json => @data }
end

使用.each @data的结果将是actions_by_type,而不是新数组。