处理rails中的json响应

时间:2012-01-14 07:07:23

标签: ruby-on-rails ajax ruby-on-rails-3 jquery

我想创建一个api url的查询,并保存URL给我回来的params作为JSON。 让我这样说吧,我有一个这样的网址:

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

我想发送参数,以便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 %>

我很确定答案是将这个参数发送给控制器然后处理这样的请求

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

我无法弄清楚如何实现这一目标。 提前致谢。

1 个答案:

答案 0 :(得分:0)

  

要求'net / 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)