Обработка ответа JSON в рельсах - PullRequest
0 голосов
/ 14 января 2012

Я хочу создать запрос к URL-адресу API и сохранить параметры, которые URL-адрес возвращает мне в виде JSON. Позвольте мне сказать это так, у меня есть такой URL-адрес:

http://version1.api.memegenerator.net/Instance_Create?username=userXXX&password=secret&languageCode=en&generatorID=45&imageID=20&text0=push хипстер вниз по лестнице и текст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 голосов
/ 14 января 2012

требуется '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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...