2011-07-17 4 views
0

에서 구출 나는 상태 업데이트가 실패 할 때 구출하기 위해 노력하고 있어요 tweets_controller트위터 보석

#called when user submits twitter form 

def message 
      unless current_user 
      session[:twitter_message] = params[:twitter_message] #sets the message from the form so it's available for send_tweet in tweet.rb after we pass through omniauth 
      redirect_to '/auth/twitter' #redirects to authorize via omniauth/twitter and create the user 
      else 
      @auth = Authorization.find_by_user_id(current_user) 
      Tweet.update_status(@auth, params[:twitter_message]) 
      redirect_to edit_user_path(current_user), :notice => "Tweet sent." 
      end 
end 

있습니다. 나는 사용자에게 플래시 메시지를 표시하고 싶지만, - 이것은 지금까지의 내가 얻을 수가 수있다 : 나는 오류 메시지가 그래서 컨트롤러를 통해 내 사용자에게 표시 할 수 있습니다 어떻게합니까

def self.update_status(auth, msg) 

    @token = auth.token 
    @secret = auth.secret 
    @message = msg 
    @t = Twitter::Client.new 

    Twitter.configure do |config| 
     config.consumer_key = '[key]' 
     config.consumer_secret = '[secret]' 
     config.oauth_token = @token 
     config.oauth_token_secret = @secret 
     config.gateway = '[gateway_url]' 
    end 

    ret = @t.update(@message) 
    tweet ||= Tweet.create_from_response(ret, auth.id) 

    rescue Twitter::Error => e 
     logger.error "#{e.message}." 
end 

을 ?

답변

1

응용 프로그램을 기반으로 사용자 지정 예외를 만들고 throw 할 수 있습니다. 응용 프로그램/lib 디렉토리/could_not_update_status_error.rb에서

모델의 다음
class CouldNotUpdateStatusError < StandardError 
end 

:

rescue Twitter::Error => e 
    logger.error "#{e.message}." 
    raise CouldNotUpdateStatusError.new("Could not update status") 

그리고 컨트롤러에

else 
    begin 
    @auth = Authorization.find_by_user_id(current_user) 
    Tweet.update_status(@auth, params[:twitter_message]) 
    redirect_to edit_user_path(current_user), notice: "Tweet sent." 
    rescue CoundNotUpdateStatusError => e 
    # Do error stuff 
end 

또 다른 옵션은 구조 복귀를 할 것 트위터 :: 오류 절에 false 및 if 문에서 update_status 호출을 래핑하지만 예외 더 강력한 솔루션입니다.

+0

감사합니다. 나는 이것을 시도 할 것이다. 클래스 선언 이외에 app/lib 파일에 어떤 것이 필요하지 않습니까? – Slick23

+0

줄'CouldNotUpdateStatusError.new ("상태를 업데이트 할 수 없습니다.")와 관련하여'잘못된 수의 인수 (1에 대해 2)가 발생했습니다. ' – Slick23

+0

이것은 Twitter의 속성입니다 :: 추가 데이터가 필요하다는 오류 Error는 StandardError를 확장합니다. 나는 나의 대답을 업데이트했다. – Gazler

관련 문제