2011-01-26 64 views
4

如何在使用before_filter时更改设计的登录路径:athenticate用户?更改设计的sign_in url

我在帖子控制器中有以下内容。

如:

class PostsController < ApplicationController 
    before_filter :authenticate_user! 

    def index 
     @posts = Post.all 
    end 
end 

目前,它会自动进入到 '/用户/ sign_in'

我想使用 '/登录'

回答

10

使用devise_for方法对现在的人进行排序。

devise_for :users, :controllers => { :registrations => 'registrations' }, :path => 'accounts', :path_names => { :sign_in => 'login', :sign_up => 'new', :sign_out => 'logout', :password => 'secret', :confirmation => 'verification' } 

所以现在sign_in路径是“账户/登录”

+1

我认为如果你添加一个前缀斜杠(` :path =>'/'`)作为它将使用根url的路径。但我不确定,因为我对Rails 3中的路由没有信心。 – 2012-04-18 12:42:41

1

我觉得你的信息寻找的是在这里:https://github.com/plataformatec/devise/wiki/How-To:-Change-the-default-sign_in-and-sign_out-routes

被盗从文档:

devise_scope :user do 
    get "/login" => "devise/sessions#new" 
end 

在你的情况下,你会使用:后,而不是:我相信用户。 它迟到了,我很模糊,但我认为应该这样做。

+0

感谢迈克虽然这种解决办法不修改sign_in资源路径。然而,我通过devise_for方法进行了整理。例如: devise_for:users,:controllers => {:registrations =>'registrations'},:path =>'accounts',:path_names => {:sign_in =>'login',:sign_up =>'new' ,:sign_out =>'logout',:password =>'secret',:confirmation =>'verification'} 所以现在sign_in路径是'accounts/login' – onepixelsolid 2011-01-29 11:37:19

2

该解决方案不会修改sign_in资源路径。

但是我通过devise_for方法对它进行了整理。例如:

devise_for :users, 
      :controllers => { :registrations => 'registrations' }, 
      :path => 'accounts', 
      :path_names => { :sign_in => 'login', 
          :sign_up => 'new', 
          :sign_out => 'logout', 
          :password => 'secret', 
          :confirmation => 'verification' } 

所以现在sign_in路径是“账户/登录”