Devise表现得很奇怪。它显示红色或错误消息,但不显示绿色或成功消息。
这是在我根据用户是否已登录后更改路由和控制器以重定向到登录页面或主页之后发生的。
所以routes.rb现在有:
devise_for :users
root :to => "questions#redirect_on_visit"
match 'home', :to => "questions#index"
和控制器:
before_filter :authenticate_user!, :except => [:redirect_on_visit]
def redirect_on_visit
if user_signed_in?
redirect_to home_path
else
redirect_to new_user_session_path
end
end
还更改了应用程序控制器,以便在登录/注销后重定向到相应的页面:
protected
def after_sign_in_path_for(resource)
stored_location_for(:user) || root_path
end
private
def after_sign_out_path_for(resource)
stored_location_for(:user) || root_path
end
答案 0 :(得分:3)
我非常麻木。我有root :to => "questions#redirect_on_visit"
这一事实,每次用户访问,登录或退出时都会重定向。重定向显然正在冲洗flash消息。
最后我找到了我正在寻找的解决方案。这是为了保留here提到的Flash消息flash.keep(:notice)
。
答案 1 :(得分:0)
您的问题是来自 login =>的多重重定向root =>家强> 因为flash对象只有一个请求的生命假
我想在redirect_on_visit
和after_sign_in_path_for
after_sign_out_path_for
路由会更好
类似这样的事情
def after_sign_in_path_for(resource)
stored_location_for(:user) || home_path
end
private
def after_sign_out_path_for(resource)
stored_location_for(:user) || new_user_session_path
end