redirect_to не работает в блоке восстановления

Я использую Octokit для входа в систему.

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 to: 'home#new'

Спасение выполнено, однако redirect_to не работает, он возвращается к тому же представлению, что и основной метод. Примечание: я читал во многих постах, что возвращение исправить это, но это не так

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 последний оператор неявно возвращается.

Другие вопросы по тегам