如何从Devise网址中删除模型名称?
即
users/sign_in -> /sign_in
users/sign_out -> /sign_out
users/registration/sign_up -> /sign_up
users/registration/edit -> /edit
答案 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