2010-07-06 68 views
2

如何从Devise网址中删除模型名称?从Devise网址中删除模型

users/sign_in -> /sign_in 
users/sign_out -> /sign_out 
users/registration/sign_up -> /sign_up 
users/registration/edit -> /edit 
+0

忘了提,在这个项目中,我运行Rails 3。 – Alfred 2010-07-06 15:42:10

回答

3

这是覆盖在所述色器件自述(https://github.com/plataformatec/devise ):

Devise还附带默认路由。 如果您需要自定义它们,您应该可以通过devise_for方法执行 。它 接受几个选项,如 :CLASS_NAME,:串流中删除等, 包括改变 路径名I18N的可能性:

devise_for :users, :path => "usuarios", :path_names => { :sign_in => 'login', :sign_out => 'logout', :password => 'secret', :confirmation => 'verification', :unlock => 'unblock', :registration => 'register', :sign_up => 'cmon_let_me_in' } 

一定要检查 devise_for文档的详细信息。

如果你有更深刻的 定制的需求,比如同时还 允许“/ sign_in”除了 “/用户/ sign_in”,所有你需要做的 是正常创建您的路线和 他们包装在 一个devise_scope块路由器:

devise_scope :user do 
    get "sign_in", :to => "devise/sessions#new" 
    end 

这样 你告诉设计使用范围:用户 当 “/ sign_in” 是访问。通知 devise_scope也别名为作为和 你也可以给一个块 devise_for,导致相同的 行为:

devise_for :users do 
    get "sign_in", :to => "devise/sessions#new" 
    end 

随意 选择一个你喜欢!

(也许这是不是在自述时,这个问题最初提出的问题。)

1

手动执行此操作的方法是Rails 3的将是:

match 'sign_in' => 'devise/sessions#new', :as => :sign_in 
match 'sign_out' => 'devise/sessions#destroy', :as => :sign_out