设计不显示成功消息

时间:2012-06-19 17:04:13

标签: ruby-on-rails devise

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

2 个答案:

答案 0 :(得分:3)

我非常麻木。我有root :to => "questions#redirect_on_visit"这一事实,每次用户访问,登录或退出时都会重定向。重定向显然正在冲洗flash消息。

最后我找到了我正在寻找的解决方案。这是为了保留here提到的Flash消息flash.keep(:notice)

答案 1 :(得分:0)

您的问题是来自 login =>的多重重定向root =>家 因为flash对象只有一个请求的生命假

我想在redirect_on_visitafter_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