1

我正在开发一个简单的 rails 应用程序,并且我有一个自定义方法可以返回最后创建的列详细信息

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. 为什么 rails 会添加u到每个 JSON 元素中?
  2. 为什么 id 返回为 20002 而不是 3?(id 是自增且是唯一键,logid 是主键)

编辑:

我发现该字符u被添加到 python 端,因为它们是 unicode 字符串并摆脱了它,如此处所示

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 回答