1

所以我试图让用户在点击“登录”之前返回他们正在查看的页面

这是我在用户应用程序控制器中得到的:

def redirect_back_or_default(default)
  redirect_to(session[:return_to] || default)
  session[:return_to] = nil
end

这就是我的会话控制器中的内容:

  def new
    @user_session = UserSession.new
    session[:return_to] = request.referer
    end
  end

    def create
    @user_session = UserSession.new(params[:user_session])
    if @user_session.save
        flash[:notice] = "Login successful!"
        redirect_back_or_default(home_path)
    else
        render :action => :new
    end
  end

这在大多数情况下都可以正常工作,但是如果用户在注册到站点后立即登录,他们将被重定向到空白页面。我想这是“创建”操作,因为它是进入新用户会话之前的最后一个操作。

所以我尝试了这个:

  def new
    @user_session = UserSession.new
    unless request.referer == join_path
    session[:return_to] = request.referer
    end
  end

这试图在我登录后将我带回登录页面。

我真正想做的是让用户在第一次登录时看到他们的个人资料。

这不会给我用户 ID 并引发路由错误

  def create
    @user_session = UserSession.new(params[:user_session])
    if @user_session.save
        flash[:notice] = "Login successful!"
        redirect_back_or_default(user_path(current_user))
    else
        render :action => :new
    end
  end

有人经历过这些重定向杂技吗?我似乎无法让它工作。如果有帮助,我正在使用 authlogic。

4

1 回答 1

0

在以下位置找到了一个很好的解决方案:http ://ethilien.net/archives/better-redirects-in-rails/

于 2010-05-27T21:39:34.107 回答