2012-08-27 73 views
2

我用设计为我的应用程序进行认证,并且一切正常,除了其被检测为unauthentication失败的设计登出消息:的Rails +设计:错误登出消息

en.devise.failure.unauthenticated: " You need to sign in or sign up before continuing "

我的意思是我注销时出现此消息,而不是“成功注销”消息。

也许我错误地将我的Devise系统人格化了。下面是我所做的personnalisations:

1 /我用我自己的会话控制器来替代默认设计会话控制器。我唯一的目标是选择一个特殊的访问(登录/注册)布局:

class SessionsController < Devise::SessionsController 

    layout 'access' 

end 

没有更多的代码。我只想使用位于views/layouts/access.html.haml的特殊登录/注册设计进行渲染。

当然,我说这个我routes.rb文件:

devise_for :users, :controller => { :sessions => 'sessions' } 

2 /我选用的设计(法国)另一种语言,所以我下载devise.fr.ymlconfig/locales/文件夹中粘贴它,并在config/application.rb设置config.i18n.default_locale = :fr文件

所有其他设计动作的消息是正确的。只有“退出”有问题。任何想法?

在此先感谢。

+0

你能告诉我的注销链接的代码? –

+0

我用'的link_to“退出”,destroy_user_session_path,:方法=>“destroy''产生与'HREF链接=本地主机:3000 /用户/ sign_out' – htaidirt

回答

6

看起来有一种方法来处理自定义布局色器件没有继承会话控制器。看看这个文档:

https://github.com/plataformatec/devise/wiki/How-To:-Create-custom-layouts

编辑

将用户重定向回到登录页面后,他们登出添加到您的应用程序控制器:

def after_sign_out_path_for(resource_or_scope) 
    sign_ins_path 
end 
+0

谢谢汤姆的回答和链接。我改变了代码不覆盖Devise控制器,但我仍然有同样的问题...即使我回到英语! – htaidirt

+2

也许发生的事情是,退出后的重定向将进入受限制的控制器操作。默认情况下,Devise重定向到root_path。在该控制器中是否有'before_filter:restrict_user'? –

+1

确实!我的根路径是公司仪表板,其中包含'before_filter:restrict_user',以防用户未登录或会话过期。如何更改:根路径将其设置为登录页面? – htaidirt

0

Devise使用http DELETE请求来注销请求。确保您注销此链接。 <%= link_to "Sign out", destroy_user_session_path, :method => :delete %>

+0

感谢路易斯,但我仍然有同样的错误注销的消息。我将'destroy'方法(如我的评论中所写)更改为'delete',但没有好消息! – htaidirt