【问题标题】:Redirect to current page rails重定向到当前页面轨道
【发布时间】:2013-07-10 04:45:33
【问题描述】:

我的应用程序导航栏中有一个登录表单,我想知道是否有一种简单的方法可以让您在登录时重定向到您当前所在的任何页面。谢谢!

【问题讨论】:

    标签: ruby-on-rails forms routes


    【解决方案1】:

    你可以redirect_to(:back),只要给出推荐人。不过,我建议您看一下this answer,因为那里提供的解决方案可以应对登录失败和 OAuth 重定向等问题。

    【讨论】:

      【解决方案2】:

      在 Rails 5 中,您应该使用 redirect_back 并添加回退路径:

      redirect_back(fallback_location: root_path)
      

      【讨论】:

        【解决方案3】:

        如果您已经编写了为您的用户创建会话的代码,那么只需在您的会话控制器中添加这一行:

        redirect_to root_url, :notice => "Logged in!"
        

        这里不是 root_url,您可以输入您希望将用户重定向到的任何路径。 但请确保你有它 routes.rb
        如果您考虑登录不成功,您可以使用render 方法重新加载您的登录视图

        【讨论】:

        • 问题是我希望 redirect_to 路径根据未登录用户当前在站点上的位置进行更改。导航栏在每个页面上都可见,例如,如果用户在登录时位于主页上,我希望 sessons_controller 运行 reidrect_to home_path 或者如果他们在登录时在用户页面上,我希望它运行运行redirect_to user_page
        • 您的登录表单是否在另一个视图或您提到的栏中?
        • 它位于导航栏,所以它在应用程序布局中
        • 我没有尝试过,但你知道你可以在你的控制器中呈现一个.json 文件。所以你需要编写一个javascript函数来重新加载页面并在你的控制器中呈现该文件。某事喜欢location.reload()
        【解决方案4】:

        来自 Devise 的This solution 应该可以解决问题...

        ApplicationController 中写入以下内容:

        after_filter :store_location
        
        def store_location
          # store last url - this is needed for post-login redirect to whatever the user last visited.
          return unless request.get? 
          if (request.path != "/users/sign_in" &&
              request.path != "/users/sign_up" &&
              request.path != "/users/password/new" &&
              request.path != "/users/password/edit" &&
              request.path != "/users/confirmation" &&
              request.path != "/users/sign_out" &&
              !request.xhr?) # don't store ajax calls
            session[:previous_url] = request.fullpath 
          end
        end
        
        def after_sign_in_path_for(resource)
          session[:previous_url] || root_path
        end
        

        【讨论】:

          【解决方案5】:

          redirect_back 对我有用:

          redirect_back fallback_location: root_path
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-10
            • 2022-01-22
            相关资源
            最近更新 更多