2016-12-05 10 views
0

Octokitを使ってログインしています。redirect_toがレスキューブロックに対応していません

helper_method :user 

def show 
end 

def user 
    client = Octokit::Client.new(access_token: session[:access_token]) 
    begin 
    @user = client.user 
    rescue => e 
    redirect_to root_path 
    return 
    end 
end 

のroot_pathが

root to: 'home#new' 

レスキューESが実行設定にある、しかしredirect_toが動作していない、それはメインメソッドと同じビューに戻ります。注:私は多くの記事を読んでそれを返してもそれは修正されませんでしたが、

+0

root_pathから ':'を削除し、root_pathがconfig/routes.rbファイルで定義されていることを確認してください。また、さらに実行を停止するには、「falseを返す」。 – bkunzi01

+0

@ bkunzi01スペルが間違っています。私は投稿を更新しました。ルートが定義されていて、root_pathが適切に定義されています。 –

答えて

1

あなたのコードはredirect_toメソッドを呼び出していますが、その後レスキューブロックはnilを返しています。代わりに、リダイレクトを組み合わせて、単一の文に戻る:メソッドでは、この文の後に何かがない限り、実際には

client = Octokit::Client.new(access_token: session[:access_token]) 
begin 
    @user = client.user 
rescue => e 
    redirect_to root_path and return 
end 

を、あなたは、すべてのリターンを必要としません。これは、Rubyでは最後の文が暗黙的に返されるためです。

+0

私は試しても機能しませんでした。問題は、コードがヘルパーメソッドにあり、メソッドコントローラにないことです。 –

+0

@mysmallideaを明確にするために投稿を更新しました –

+0

Octokitはユーザーがいなければ実際に例外を発生させますか? – mysmallidea

関連する問題