ユーザーのタイムゾーンを含むログインフォームに隠しフィールドを作成しましたが、そのユーザーセッションに設定したいと思います。認証にdeviseを使用しています。params[:hiddenfieldname]
ユーザーをホームページにリダイレクトしているコントローラーで使用する値にアクセスできない場合。不足している手順を教えてください。
質問する
805 次
1 に答える
1
決定的な答えを提供するのに十分な情報が質問にあるとは思いません。そうでない場合は、動作していないコードを投稿してください。これが私の推測です...
Devise を使用してログイン (またはログアウト) すると、これらのアクションは Devise::SessionController によって管理されます。ユーザーがログインすると、そのコントローラーの一部がユーザーを場所 (デフォルトではホーム) にリダイレクトし、その時点でparams
アレイがクリアされます。
params
Devise ログイン プロセスの残りの部分が実行される前に、タイムゾーンの値をセッションに取り込むことができるように、コード内でそのコントローラーの関連するメソッドをオーバーライドする必要があります。何かのようなもの
class DeviseCustom::SessionsController < Devise::SessionsController
def create
session[:user_timezone] = params[:hiddenfieldname]
super
end
end
このコードはapps/controllers/devise_custom/session_controller.rb
プロジェクトに存在します。
routes.rb
編集:次のように、新しいコントローラーのカスタム パスを指定するためにも更新する必要があります。
devise_for :users, :controllers => {
:sessions => "devise_custom/sessions",
}
于 2012-11-19T19:37:12.973 に答える