2016-10-13 2 views
0

나는 stackoverflow를 통해 여러 시간을 보냈고보기 파일에서 twitter gem의 메소드를 호출하는 방법에 대한 간단한 설명을 찾을 수 없습니다. 다음 파일을 가지고 매우 간단한 레일을 설정하고이를 테스트하기 위해 트위터 API 클라이언트를 전역 변수로 설정했습니다. 그것은 레일 콘솔에서 작동하지만 레일에서 작동시키지 못합니다. 내가 오류가 undefined method "followers" for nil:NilClass보기 파일의 twitter api 클라이언트에서 Twitter gem 메소드를 호출하는 방법

설정/초기화/twitter.rb

require 'twitter' 

$client = Twitter::REST::Client.new do |config| 
    config.consumer_key = 'xxxx' 
    config.consumer_secret = 'xxxx' 
    config.access_token = 'xxxx' 
    config.access_token_secret = 'xxxx' 
end 

Rails.application.routes.draw do 
    get 'welcome/index' 
    root 'welcome#index' 
end 

routes.rb

class WelcomeController < ApplicationController 

    def index 
    end 

end 

welcome_controller.rb index.html.erb (이다 환영합니다 .rb)

<h1>Hi there</h1> 

<p><%= $client.user %></p> 

구성 파일에 직접 모든 인증 키를 입력 했으므로 사용자 정보를 반환해야합니다.

많은 감사

+0

내 대답은 이것에 어떤 도움이 되었습니까? –

답변

0

당신이 표면에 자사의 가난한 건축 결정처럼 보인다 뷰의 실제 트위터 클라이언트 방법을 원하는 이유는 당신이 자신을 요구해야 가장 먼저하는 일입니다. 앱을 구성하는 더 좋은 방법이 없다는 것을 이미지로 표현하는 것이 어렵지 않으므로 어렵습니다.

클라이언트 변수를 인스턴스 변수로 만들고 뷰에 전달하고 트위터 클라이언트 메서드를 캡슐화하고 뷰에서 호출하는 도우미가있는 것이 무엇이든지 대답 할 수 있습니다. 아래를보십시오.

class WelcomeController < ApplicationController 
    require 'twitter' 

    def index 
    @client = Twitter::REST::Client.new do |config| 
     config.consumer_key = 'xxxx' 
     config.consumer_secret = 'xxxx' 
     config.access_token = 'xxxx' 
     config.access_token_secret = 'xxxx' 
    end 
    end 
end 

#app/helper/welcome.rb 
module WelcomeHelper 
    def welcome_tweet(twitter_client, message) 
    twitter_client.send_tweet(message) 
    end 
end 

나는 더 나은 솔루션 그래도 그냥 인스턴스 변수 (들)과보기에 트위터 클라이언트 방법의 결과를 보내 그들을 거기 표시하는 것입니다 생각합니다. 귀하의보기 및 외부 시스템 방법을 통해 이상 코드 냄새와 나쁜 아이디어입니다