1

设计的行为很奇怪。它显示红色或错误消息,但不显示绿色或成功消息。

这发生在我对路由和控制器进行更改以根据用户是否登录重定向到登录页面或主页之后。

所以 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
4

2 回答 2

3

我极度麻木。我拥有 , 的事实root :to => "questions#redirect_on_visit"将在每次用户访问、登录或退出时重定向。重定向显然是在洗掉闪存消息。

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

于 2012-06-20T21:10:13.060 回答
0

您的问题是从登录 => 根 => 主页的多重重定向, 因为 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
于 2012-06-20T08:28:43.217 回答