8

ユーザーがログインした後、以前の場所に自動的にリダイレクトされるようにしたいと思いますが、これは決して起こらないようで、常にルートの場所にリダイレクトされます。このためのデバイスに関するドキュメントを読むと、この機能は正常に機能するはずです。どういうわけか間違って使用していますか、および/または場所を保存してリダイレクトするように強制するにはどうすればよいですか?

http://rubydoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers#stored_location_for-instance_method

authentication = UserToken.find_by_provider_and_uid(omniauth['provider'], omniauth['uid'])

if authentication
  flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => omniauth['provider']
  sign_in_and_redirect(:user, authentication.user)
else
4

1 に答える 1

4

この Google グループ ページの一番下までスクロールし、オーバーライドされた 'stored_location_for' デバイス メソッドを確認してください。私の application_controller には、次のような適応バージョンがあります。

  def stored_location_for(resource)
    if current_user && params[:redirect_to]
      flash[:notice] = "Congratulations, you're signed up!"
      return params[:redirect_to]
    end
    super( resource ) 
  end

これにより、「redirect_to」パラメーターを渡すことで手動で場所を作成できるようになります。

于 2010-12-02T07:11:20.587 に答える