0

サインインしていないユーザーが URL にヒットすると、devise はそれらをサインイン ページに転送し、その後、ユーザーを元のページに転送します。サインイン ビューでこの情報 (元のルート/アクション) にアクセスするにはどうすればよいですか? ユーザーがどこに行くかによって、GUI を別の方法で表示したいと思います。

4

1 に答える 1

0

そのため、devise のセッション コントローラーを拡張/オーバーライドする必要があります。これを行うには、最新のnewアクション コードをhereからコピーし、次のように、devise のセッション コントローラーから継承するコントローラー (セッションと呼びましょう) に貼り付けます。

class SessionsController < Devise::SessionsController
  def new
    self.resource = build_resource(nil, :unsafe => true)
    clean_up_passwords(resource)
    @after_sign_in_url = after_sign_in_path_for(resource)
    respond_with(resource, serialize_options(resource))
  end
end

このコントローラーは Devise のコントローラーを継承しているため、コントローラーでアクションが定義されていない場合、そのアクションは Devise のコントローラーによって処理されます。newしたがって、そのアクションをオーバーライドするだけです。

最後に、この変更が有効になるようにルート ファイルを編集します。

# routes.rb
devise_for :users, :controllers => { :sessions => 'sessions' }

または、スコープを使用している場合は、次のようにします。

# routes.rb
devise_scope :user do
  get 'login' => 'sessions#new', :as => :new_user_session
end

@after_sign_in_urlビューでアクセスできるようになりました。

于 2012-04-09T22:09:02.127 に答える