"home#logout" 但是不要让任何请求-6ren">
gpt4 book ai didi

ruby-on-rails - 呈现只能请求 1 次的页面?

转载 作者:行者123 更新时间:2023-12-04 04:54:49 25 4
gpt4 key购买 nike

一个页面如何呈现一个显示“感谢您访问我们”的“/注销”页面,然后如果用户重新加载浏览器,它会加载“/”?

我有一个

match "/logout" => "home#logout"

但是不要让任何请求“/logout”的人看到这个页面,它应该只在用户被signed_out 后直接呈现。

什么是最好的方法来处理这个渲染依赖于条件重定向(到 root_path)而不是使用 redirect_to 的 View

最佳答案

你可能想要:

match '/logout' => 'sessions#destroy', :via => :delete

并使用 logout_path在您的 link_to helper 或者您决定在您的应用程序中实现注销。

并在 SessionsController#destroy 中快速写下您的信息.它可能看起来像:
class SessionsController < ApplicationController
def destroy
sign_out # or whatever you named your method for signing out
flash[:notice] = "Thanks for visiting us"
redirect_to root_path
end
end

为了确保请求转到 root_path当用户未登录时,您应该放置一个 before_filterApplicationController :
class ApplicationController < ActionController::Base
before_filter :authenticate_user

def authenticate_user
unless signed_in?
redirect_to root_path
end
end
helper_method :authenticate_user
end

这样,用户退出后,所有请求都会重定向到 root_path .

要允许在未登录的情况下请求页面,请使用 skip_before_filter在适当的 Controller 类中:
def MyPublicStuffsController < ApplicationController
skip_before_filter :authenticate_user
# ...
end

关于ruby-on-rails - 呈现只能请求 1 次的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16900723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com