如何通过Ajax从Rails传递created_at

时间:2015-09-02 08:59:00

标签: ruby-on-rails ajax json

我的模型叫做Reports。我有一个Ajax调用,设置为 @reports = Report.all

Report.all包含通常用于Rails字段,如created_at和updated_at。

现在,我想在页面上显示它们,但由于某种原因,传递给页面的JSON数据不包含这些字段。这是某种Ruby安全设置吗?

我很好奇如何启用它们以及通过什么机制JSON加载具有不属于模型一部分的URL字段?

UPD。 控制器代码是

#GET /reports
#GET /reports.json
def index
   @reports = Report.all
end

当我在rails控制台中打印Report.all时,它包含created_at字段。当我通过0.0.0.0:3000/report.json卷曲此控制器时,没有created_at和updated_at文件。

1 个答案:

答案 0 :(得分:2)

默认情况下,Rails生成器将为索引生成jbuilder视图文件:

$ rails generate scaffold Report ...

会给你:

# app/views/reports/index.json.jbuilder
json.array!(@reports) do |report|
  json.extract! report, :id, :some_other_attributes, ...
  json.url report_url(report, format: :json)
end

extract!方法仅输出其参数中明确提到的属性。如果要在json索引中输出created_atupdated_at,只需将它们添加到方法的参数列表中:

  json.extract! report, :id, ..., :created_at, :updated_at