0

我正在尝试通过 REST 接口从 Rails 应用程序中提取 JSON 记录。我正在使用 RABL 创建 JSON。我想要大于指定 created_at 的记录。

在 wearquests 控制器中,我有这个:

def index
  if params[:created_at] != nil
    @worequests = Worequest.find(params[:created_at])
  else
    @worequests = Worequest.order(:created_at)
end

如果我在浏览器中输入:

http://localhost:5000/worequests?created_at=2012-11-28%2016:37:29.253916

我明白了:

Couldn't find Worequest with id=2012-11-28 16:37:29.253916

我从 PG 表中复制了日期时间。

问题1

为什么找不到那个记录?

问题2

要使用大于,我应该能够在 URL 中使用类似的东西吗?

http://localhost:5000/worequests?created_at>2012-11-28%2016:37:29.253916

问题3

如果我能正常工作,那么我将如何要求 JSON?

http://localhost:5000/worequests?created_at>2012-11-28%2016:37:29.253916.json

更新1

谢谢 HungryCoder - 这现在有效:

http://localhost:5000/worequests?created_at=2013-01-01

我得到一个大于该日期的记录的索引列表。

但是,我如何获得 JSON?

我试过这个:

http://localhost:5000/worequests?created_at=2013-01-01.json
4

1 回答 1

0

答案 1

find方法需要记录的 ID。

如果要使用 created_at 字段进行过滤,请使用 where 或属性辅助方法

@worequests = Worequest.where("created_at = ?", params[:created_at])

或者,

@worequests = Worequest.find_by_created_at(params[:created_at])

或者,

@worequests = Worequest.find_all_by_created_at(params[:created_at])

Worequest.find类似于Worequest.find_by_id(假设 id 是主键的名称)

回答 2 您不能在查询字符串中使用这种格式。你可以把它放在单独的变量中,比如

http://localhost:5000/worequests?created_at=2012-11-28%2016:37:29.253916&compare=%3E

所以,比较大于可能是这样的:

if params[:compare] == '>' 
  @worequests = Worequest.where("created_at > ?", params[:created_at])
end

'%3E' 是 uri 编码版本>

答案 3

http://localhost:5000/worequests.json?created_at>2012-11-28%2016:37:29.253916
于 2013-03-20T19:37:34.657 回答