1

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

我创建了一个简单的 rails 应用程序,并生成了脚手架 MyRecords。然后我尝试使用以下代码在 irb 上创建记录:

测试WS.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

使用上面的代码,我设法创建了一条记录。问题是我的记录(只有“名称”列)是用空名称创建的!

对这个有什么建议吗?

我渴望将这种绝望一点一点地切碎。

感谢您的贡献。

4

1 回答 1

0

尝试将这两行添加到您的 HTTParty 类中:

format :json
headers "Accept" => "application/json"

这些告诉 httparty 和它连接到的远程服务发送和接收 JSON。对于您的示例(在 URL 末尾带有 .json),没有必要添加第二行,但我发现这是一种很好的做法,无论如何都要保留它。

下一个问题是 Rails 期望您上传的数据位于对象的顶级名称中。因此,对于您的示例,选项行应如下所示:

options = { :body => { :person => { :name => text } } }

替换person为您尝试创建的模型的名称。

于 2012-06-25T17:36:45.270 回答