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