2

如何从设计网址中删除型号名称?

IE

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

2 回答 2

3

这在设计自述文件 (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

随意选择您喜欢的那个!

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

于 2011-04-14T21:32:38.840 回答
1

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

match 'sign_in' => 'devise/sessions#new', :as => :sign_in
match 'sign_out' => 'devise/sessions#destroy', :as => :sign_out
于 2010-07-06T16:00:19.387 回答