ruby-on-rails – Rails 4.2奇怪地渲染JSON格式化DateTime

我有一个渲染
JSON的控制器.特别是与特定节目相关的所有门票.因此,当用户尝试预订票证时,会保留票证,然后将所有票证列表作为JSON发送回用户的浏览器以使用某些
JavaScript进行渲染.

我遇到了一些奇怪的输出,如果我创建一个节目并给它2票,然后调用ticket.show.tickets.as_json我得到以下数组:

{"show_id"=>1, "id"=>1, "user_id"=>1, "created_at"=>Wed, 22 Apr 2015 21:47:44 UTC +00:00, "updated_at"=>Wed, 22 Apr 2015 21:47:44 UTC +00:00, "status"=>"open", "reserved_until"=>Wed, 22 Apr 2015 21:57:44 UTC +00:00, "seat_id"=>1}
{"show_id"=>1, "id"=>2, "user_id"=>nil, "created_at"=>Wed, 22 Apr 2015 21:47:44 UTC +00:00, "updated_at"=>Wed, 22 Apr 2015 21:47:44 UTC +00:00, "status"=>"open", "reserved_until"=>nil, "seat_id"=>2}

但是如果我在我的控制器中运行以下代码,这就是我得到的数组:

{"show_id"=>1, "id"=>1, "user_id"=>1, "created_at"=>"2015-04-22T21:47:44.338Z", "updated_at"=>"2015-04-22T21:47:44.345Z", "status"=>"open", "reserved_until"=>"2015-04-22T21:57:44.343Z", "seat_id"=>1}, {"show_id"=>1, "id"=>2, "user_id"=>nil, "created_at"=>"2015-04-22T21:47:44.340Z", "updated_at"=>"2015-04-22T21:47:44.340Z", "status"=>"open", "reserved_until"=>nil, "seat_id"=>2}

TicketsController:

class TicketsController < ApplicationController
  def reserve
    begin
      @ticket = Ticket.find(params[:id])
    rescue
      return
    end
    @ticket.reserve_ticket current_or_guest_user

    render json: @ticket.show.tickets
  end
end

我试着在控制器中调用render json:@ ticket.show.tickets.as_json,但我得到了同样的东西.

最佳答案 我认为你期望as_json将对象作为json返回.这根本不是无理的期望!不幸的是,
as_json返回“表示模型的哈希”.这是一种返回哈希的可配置方式,然后可以使用to_json轻松将其转换为json.

你的渲染json:…调用实际上会为你调用to_json,这意味着你得到了实际的json.只需一个as_json调用,您就可以获得从模型属性到值的映射,但这些值本身不会转换为json.

点赞