0

RailsアプリからRESTインターフェースを介してJSONレコードを抽出しようとしています。私はRABLを使用してJSONを作成しています。指定されたcreated_atよりも大きいレコードが欲しいのですが。

worequestsコントローラーには、次のものがあります。

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

UPDATE1

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またはattributeヘルパーメソッドを使用します

@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 に答える