2014-01-12 2 views
0

Я пытаюсь использовать Фарадей с Rails 4 для Google API Oauth в коде ниже:Фарадей не работает на Rails

class GoogleApisController < ApplicationController 

    def oauth2callback 
     require 'faraday' 
     render layout: false 

     conn = Faraday.new(:url => 'https://accounts.google.com',:ssl => {:verify => false}) do |faraday| 
      faraday.request :url_encoded 
      faraday.response :logger 
      faraday.adapter Faraday.default_adapter 
     end 

     @result = conn.post '/o/oauth2/token', {'code' => params[:code], 
      'client_id' => "some_id", 
      'client_secret' => "some_secret", 
      'redirect_uri' => "some_redirect_uri", 
      'grant_type' => 'authorization_code'} 

    end 
end 

Но когда я @result.body.inspect он не возвращает ничего.

Так что @result возвращает нуль и, похоже, не обрабатывается вообще.

Однако, когда я пытаюсь использовать приведенные выше коды в liveshell, это сработает.

Есть ли причина, почему это происходит?

+0

Я думаю, это потому, что вы визуализируете шаблон, прежде чем на самом деле ничего не делаете. Если вы переместите 'render' в последний оператор, это сработает? – Eugene

+0

Просто подтвердил это в одном из моих приложений с рельсами. Если вы создаете перед созданием объекта '@ result', шаблон ничего не отображает. – Eugene

+0

@ Юджин, вы правы! Пожалуйста, положите это в ответ, чтобы я мог принять его! Большое спасибо! –

ответ

0

Если вы попытаетесь установить render, прежде чем создавать экземпляр объекта, который вы пытаетесь сделать render, на шаблоне на самом деле ничего нет. Перемещение инструкции render в нижней части метода позаботится об этой проблеме.