1

シンプルなレールアプリを開発しており、最後に作成された列の詳細を返すカスタムメソッドがあります

def getid
    @b_id = params[:bid]
    @log_id = Log.where("bid = ?",@b_id).last.to_json
    respond_to do |format|
        format.html{render :text => @log_id}
        format.json{render :json => @log_id}
    end
end

列はバックエンドで次のクエリを実行します

Log Load (0.2ms)  SELECT `logs`.* FROM `logs` WHERE (bid = 'B01') ORDER BY `logs`.`logid` DESC LIMIT 1

対応する列の値は id:3、logid:20002 です。

返される json は {u'id' : u'20002, u'logid' : u'20002'} です。

私の質問:

  1. Railsuがすべての JSON 要素に追加されるのはなぜですか?
  2. ID が 3 ではなく 20002 として返されるのはなぜですか? (id は自動インクリメントでユニークキー、logid は主キー)

編集:

u文字はユニコード文字列であるため、Python側で追加されていることがわかり、ここに示すように削除されました

4

1 に答える 1

0

to_jsonこの行でオブジェクトを呼び出す必要はありません

@log_id = Log.where("bid = ?",@b_id).last.to_json

元のオブジェクトだけで構いません。

@log_id = Log.where("bid = ?",@b_id).last

呼び出すとrender json: @obj、obj を json に変換するアクションがあるためです。重複する必要はありません。

于 2013-06-03T18:13:07.207 に答える