Ruby on rails Ruby先生Rails女士我的json记录是空的
这里的这个新手正在用Rails上的Web服务打他的头。 也许有人能减轻我的痛苦 我创建了一个简单的rails应用程序,并生成了scaffold MyRecords。然后,我尝试通过irb创建一个记录,代码如下: testWS.rbRuby on rails Ruby先生Rails女士我的json记录是空的,ruby-on-rails,ruby,json,post,httparty,Ruby On Rails,Ruby,Json,Post,Httparty,这里的这个新手正在用Rails上的Web服务打他的头。 也许有人能减轻我的痛苦 我创建了一个简单的rails应用程序,并生成了scaffold MyRecords。然后,我尝试通过irb创建一个记录,代码如下: testWS.rb require 'HTTParty' class MyRecordCreate include HTTParty base_uri 'localhost:3000' def initialize(u, p) @auth = {:username
require 'HTTParty'
class MyRecordCreate
include HTTParty
base_uri 'localhost:3000'
def initialize(u, p)
@auth = {:username => u, :password => p}
end
def post(text)
options = { :body => { name:text} }
self.class.post('/my_records', options)
end
end
response = HTTParty.get("http://localhost:3000/my_records/new.json")
print response
record = MyRecordCreate.new("","").post("test remote record")
print record
通过上面的代码,我成功地创建了一个记录。问题是,我的记录只有一个列名,它是用一个空名称创建的
对这个有什么建议吗
我渴望一片一片地把这片绝望的土地分割开来
感谢您的贡献。尝试将以下两行添加到您的HTTParty类中:
format :json
headers "Accept" => "application/json"
它们告诉httparty和它所连接的远程服务发送和接收JSON。对于URL末尾带有.json的示例,不需要添加第二行,但我发现这是一种很好的做法,并保留它
下一个问题是Rails希望上传的数据位于对象的顶级名称内。因此,对于您的示例,选项行应该类似于:
options = { :body => { :person => { :name => text } } }
用您试图创建的模型的名称替换person。请制作适当的信息标题。我改进了你的上一个问题,你来解决这个问题。另外,请更加注意代码格式。S/O:所有进入的人,请注意,不允许任何人有幽默感……嗨,塞吉奥,对不起,但我确实有点迷路了。之前的问题是什么?至于标题,我只是想在json上创建一个记录,我想这说明了一切。。好的,所以我甚至提到我用Ruby和Rails来做这个…我是以对话的形式做的。。。我没有不尊重的意思…虽然从你的回答来看,似乎是这样的。你能更具建设性一点吗?非常感谢。我刚刚发现了StackOverflow,对于格式和其他方面的帮助,我将不胜感激。Cheers我认为Sergio的观点是,编程语言的拟人化并没有让其他读者更接近你手头的问题。这太棒了,我已经测试过了,它可以工作:-,而且非常合理……你知道我在哪里可以找到更多关于HTTParty使用的文档吗?我只是觉得很难回答这个问题…而且看起来很简单。。。实际上,我在没有headers行的情况下进行了测试,虽然创建了记录,但输出是一个解析错误……format:json实际上是做什么的?写标题“Content Type”=>“application/json”是否也一样?干杯,谢谢。你刚刚帮我切断了一片绝望。我现在又回到了自由的道路上。我发现的最好的文档是他们的RDOC:但是,如果你像我一样通过示例学习,他们的示例非常有用:谢谢Daniel..我以为我已经看过这些示例了,但是再看一眼,我发现了更多可能有助于我前进的优秀示例。再次感谢你的帮助。干杯