【问题标题】:How to update an existing Rails model object via a JSON post operation?如何通过 JSON 发布操作更新现有的 Rails 模型对象?
【发布时间】:2016-07-18 00:11:41
【问题描述】:

我正在将数据写入 Rails 模型,使用 Python 发送 JSON(以演示我创建了一个简单的脚手架 Book 并带有标题和价格):

import json, urllib2    
httpHeaders = {'Content-Type': 'application/json', 'Accept': 'application/json'}

bookData = {"title": "blah", "price":5}  
req = urllib2.Request("http://localhost:3000/books.json", json.dumps({"book": bookData}), httpHeaders)
response = json.loads(urllib2.urlopen(req).read())

这会插入书并给它 ID = 1:

# http://localhost:3000/books/1.json
{"id": 1,"title": "blah","price": 5}

我现在如何通过 JSON 编辑此记录,例如更改价格?

【问题讨论】:

    标签: python ruby-on-rails json activerecord urllib2


    【解决方案1】:

    在写问题的过程中,我偶然发现了答案,所以我决定发布问题和答案,而不是删除它,因为我在 SO 的其他地方看不到它。

    rake routes 表明更新方法使用 PATCH(而不是 GET 或 PUT),因此对How do I make a PATCH request in Python 的回答帮助我在 Python/Rails 上下文中解决了这个问题:

    bookData = {"price":60}
    req = urllib2.Request("http://localhost:3000/books/1.json", json.dumps({"book": bookData}), httpHeaders)
    req.get_method = lambda: 'PATCH'
    response = json.loads(urllib2.urlopen(req).read())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-17
      • 2023-04-06
      • 1970-01-01
      • 2016-07-23
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多