Rails形式=>网址=> JSON =>保存参数

时间:2012-01-14 08:15:33

标签: ruby-on-rails ruby ajax json post

这基本上就是我想做的事情,使用表单中给出的参数,我想对网站做一个GET / POST请求,这个网站需要一个特定的网址,如http://site.com/user=XXX&size=XXX,它会给我返回一个JSON,我希望在提交表单时将这个JSON中的数据解析/保存到我的rails应用程序中。

我完全迷失了这种方式,任何事情都会非常感激。

Rails表单数据=>构建URL =>做GET / Post请求=> Catch JSON => Parse =>保存

3 个答案:

答案 0 :(得分:1)

对于rest api,您可以在应用程序中使用activeresource http://api.rubyonrails.org/classes/ActiveResource/Base.html

如果它是非常具体的东西,你可以使用Net :: Http发出请求,然后自己将json解析为ruby对象。

使用http://www.rubyinside.com/nethttp-cheat-sheet-2940.html

的示例

解码json你可以使用 Json或ActiveSupport :: JSON.decode或此https://github.com/flori/json

答案 1 :(得分:0)

我想你想要另一个请求而不是你的网站获得回复。所以你可以安装curb gem(红宝石中的卷曲包装)。然后使用它在另一个站点上发出请求,并使用像Json这样的标准RoR工具解析json以进行哈希。

答案 2 :(得分:0)

http://www.rubyinside.com/nethttp-cheat-sheet-2940.html开始,您可以执行以下操作:

在文件顶部添加:

require "net/http"
require "uri"
require 'json'

然后在你的控制器或助手中:

#set the uri
uri = URI.parse("http://my.site.com/uri")

#set the post params and get the respons
response = Net::HTTP.post_form(uri, {"first_param" => "my param", "second_param" => "another param"})

#get the json info
data = JSON.parse(response.body)

#set result to an ActiveRecord (maybe there is a better way to do this, I guess it depends on the response you get
@something = Mymodel.new
@something.name = data["name"]
...
@something.save

希望它有所帮助!