2012-01-14 74 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