私はRailsに比較的慣れていないので、Railscastをフォローして速度を上げ、ログイン関数を正常に作成しました。コードは次のとおりです。
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
if params[:remember_me]
cookies.permanent[:auth_token] = user.auth_token
else
cookies[:auth_token] = user.auth_token
end
redirect_to root_url, :notice => "Logged in!"
else
flash.now.alert = "Invalid email or password"
render "new"
end
end
ただし、コードが示すように、ユーザーは、で示されているように、常にホームページにリダイレクトされますroot_url
。
私が達成したいのは、次のようなものです。
- ユーザーは「About」、「Contact」などのページを表示しています
- ユーザーが「ログイン」リンクをクリックすると、ログインフォームページに移動します
- ログインに成功した(または失敗した)後、ユーザーは「About」、「Contact」ページなどに戻ります。
しかし、何に置き換えればいいのかわからないようですroot_url
。試しrequest.referer
ましたが、ユーザーが最初にログインフォームにアクセスしたページではなく、明らかにログインフォーム(または、すでにログインしていることを示すメッセージ)に戻りました。
参照ページを文字列などに格納してそれにリダイレクトする、ある種のスイッチ/ケースを実行できると思いますが、これは少し不格好に聞こえます(ほとんどのRailsと同様に)私が行方不明になっているより簡単な方法!
ありがとう!