sign_inに使用されたparamsに基づいてユーザーをリダイレクトしたいのですが、方法がわかりません。 /users/sign_in/?demo=car
sign_inパラメータに基づいてユーザーをリダイレクトする
ユーザー:: SessionsController <工夫:: SessionsController明らかにそれが動作しないでしょう
def create
super
# get the params
if params[:demo] == car
# redirect_to where_ever
end
end
からで
ユーザーがサイン。
正しいリダイレクト:
ApplicationControllerに< ActionController ::ベース
def after_sign_in_path_for(resource)
# I must have params[:demo] here. How?
if params[:demo] == car
# go elsewhere
else
request.env['omniauth.origin'] || stored_location_for(resource) || root_path
end
end
非常に長い道のりが、その後のparamsを持つユーザーの列を更新する場合とafter_sign_in_path_for
に私がのためにcurrent_user
列をチェックparamsは次にリダイレクトします。ユーザーが元のURLから来た場合は、列を""
に更新します。時間の無駄、そう?
あなたのログインフォームに隠し入力を追加し、 'のparamsでその値を埋めることができます[:デモ]'。フォームを送信した後(ログイン中)、値は 'params'からアクセスできます。 –
私はまだユーザーがログインした後にそのparamsを持つ必要があります。私は私が欲しいことをするためにユーザーモデルを更新する必要があるかもしれないと思う。 – Sylar
私はパラメータを 'after_sign_in_path_for'メソッドに転送する方法を提示しました。データベースに保存するか、セッションに保存することができます。あなたのケースによります;) –