如何呈现页面显示“/ logout”页面显示“感谢访问我们”然后如果用户重新加载浏览器,它将加载“/”而不是?
我有一个
match "/logout" => "home#logout"
但请不要任何请求“/ logout”的人看到此页面,只有在用户签名后才能直接呈现。
最好的方法是使用条件重定向(到root_path)而不是使用redirect_to
来渲染视图答案 0 :(得分:3)
你可能想要:
match '/logout' => 'sessions#destroy', :via => :delete
在logout_path
帮助器中使用link_to
,或者您决定在应用程序中实现注销。
并在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_filter
中放置ApplicationController
:
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
:
def MyPublicStuffsController < ApplicationController
skip_before_filter :authenticate_user
# ...
end