从Devise网址中删除模型

时间:2010-07-06 15:08:29

标签: ruby-on-rails devise

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

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

2 个答案:

答案 0 :(得分:3)

这在设计自述文件(https://github.com/plataformatec/devise)中有所介绍:

  

Devise还附带默认路线。   如果你需要自定义它们,你   应该可以做到   通过devise_for方法。它   接受几个选项,如   :class_name,:path_prefix等,   包括改变的可能性   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”   “/ users / sign_in”,您需要做的就是   是正常创建你的路线   将它们包装在devise_scope块中   路由器:

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

这样   你告诉devise使用范围:user   何时访问“/ sign_in”。注意   devise_scope也被别名为和   你也可以给一个块   devise_for,结果一样   行为:

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

随意   选择你喜欢的那个!

(当这个问题最初提出时,也许这不在自述文件中。)

答案 1 :(得分:1)

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

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