0

私は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

私が達成したいのは、次のようなものです。

  1. ユーザーは「About」、「Contact」などのページを表示しています
  2. ユーザーが「ログイン」リンクをクリックすると、ログインフォームページに移動します
  3. ログインに成功した(または失敗した)後、ユーザーは「About」、「Contact」ページなどに戻ります。

しかし、何に置き換えればいいのかわからないようですroot_url。試しrequest.refererましたが、ユーザーが最初にログインフォームにアクセスしたページではなく、明らかにログインフォーム(または、すでにログインしていることを示すメッセージ)に戻りました。

参照ページを文字列などに格納してそれにリダイレクトする、ある種のスイッチ/ケースを実行できると思いますが、これは少し不格好に聞こえます(ほとんどのRailsと同様に)私が行方不明になっているより簡単な方法!

ありがとう!

4

1 に答える 1

0

return_toをセッションに保存できます。ここで参照できます。

于 2012-09-26T13:16:21.433 に答える