2012-01-14 77 views
0

我想创建一个查询到一个api URL并保存一个URL给我的参数作为JSON。 让我这样说吧,我有这样一个网址:在rails中处理json响应

http://version1.api.memegenerator.net/Instance_Create?username=userXXX&password=secret&languageCode=en&generatorID=45&imageID=20&text0=push一个时髦下楼&的text1 =现在看看谁的翻滚

而且我想发送的参数,以便API给我回我的数据作为JSON ....

我想创建这样一种形式......

<%= form_for(@meme, :url => "memeapi", :remote => true) do |f| %> 
    <%= f.error_messages %> 
    <p> 
    <%= f.label :memeid %><br /> 
    <%= f.number_field :memeid %> 
    </p> 
    <p> 
    <%= f.label :imgid %><br /> 
    <%= f.number_field :imgid %> 
    </p> 
    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.label :text0 %><br /> 
    <%= f.text_field :text0 %> 
    </p> 
    <p> 
    <%= f.label :text1 %><br /> 
    <%= f.text_field :text1 %> 
    </p> 

    <p> 
    <%= f.label :user %><br /> 
    <%= f.text_field :user %> 
    </p> 
    <p><%= f.submit %></p> 
<% end %> 

我敢肯定的答案发送此PARAMS到控制器,然后处理请求像这样的东西

def memeapi 
     @meme = Meme.new(params[:meme]) 
     @apiurl = "version1.api.memegenerator.net/Instance_Create?username=apigen&password=koalass&languageCode=en&generatorID=#{@meme.memeid}&imageID=#{@meme.imgid}&text0=#{@meme.text0}&text1=#{@meme.text1}" 
     redirect_to @apiurl 
     @meme.url = "#{@meme.name}-#{@meme.id}" 

    end 

我不知道如何实现这一点。 在此先感谢。

回答

0

需要 '网/ HTTP'

url = "http://version1.api.memegenerator.net/Instance_Create?username=apigen&password=koalass&languageCode=en&generatorID=#{@meme.memeid}&imageID=#{@meme.imgid}&text0=#{@meme.text0}&text1=#{@meme.text1}" 
resp = Net::HTTP.get_response(URI.parse(url)) 
data = resp.body 
# we convert the returned JSON data to native Ruby 
# data structure - a hash 
result = ActiveSupport::JSON.decode(data) 
+0

好吧,但我怎么能看到get_repsonse工作?我可以格式化结果变量,我怎么看到什么让我回来? – 2012-01-14 20:04:06

+0

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTPResponse.html即响应对象,您还可以处理状态和消息 – Fivell 2012-01-14 23:14:09