如何从设计网址中删除型号名称?
IE
users/sign_in -> /sign_in
users/sign_out -> /sign_out
users/registration/sign_up -> /sign_up
users/registration/edit -> /edit
如何从设计网址中删除型号名称?
IE
users/sign_in -> /sign_in
users/sign_out -> /sign_out
users/registration/sign_up -> /sign_up
users/registration/edit -> /edit
这在设计自述文件 (https://github.com/plataformatec/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 文档以获取详细信息。
如果您需要更深入的自定义,例如除了“/users/sign_in”之外还允许“/sign_in”,您需要做的就是正常创建路由并将它们包装在路由器的 devise_scope 块中:
devise_scope :user do
get "sign_in", :to => "devise/sessions#new"
end
这样你告诉设计在访问“/sign_in”时使用范围:用户。注意 devise_scope 也有别名 as,你也可以给 devise_for 一个块,导致相同的行为:
devise_for :users do
get "sign_in", :to => "devise/sessions#new"
end
随意选择您喜欢的那个!
(当这个问题最初提出时,也许这不在自述文件中。)
手动执行此操作的方法是 Rails 3:
match 'sign_in' => 'devise/sessions#new', :as => :sign_in
match 'sign_out' => 'devise/sessions#destroy', :as => :sign_out