Ruby on rails Ruby先生Rails女士我的json记录是空的

Ruby 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

这里的这个新手正在用Rails上的Web服务打他的头。 也许有人能减轻我的痛苦

我创建了一个简单的rails应用程序,并生成了scaffold MyRecords。然后,我尝试通过irb创建一个记录,代码如下:

testWS.rb

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..我以为我已经看过这些示例了,但是再看一眼,我发现了更多可能有助于我前进的优秀示例。再次感谢你的帮助。干杯