我的模型叫做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文件。
答案 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_at
和updated_at
,只需将它们添加到方法的参数列表中:
json.extract! report, :id, ..., :created_at, :updated_at