【问题标题】:Implementing :except in the routes for devise_for在 devise_for 的路线中实施 :except
【发布时间】:2012-01-07 05:00:44
【问题描述】:

通过对 user_auth 使用设计,它设置了一些默认路由(例如 /user/edit 和 /user/sign_in)。在 routes.rb 我有

devise_scope :user do
  get 'signin' => 'devise/sessions#new'
  etc.
end

问题是 /signin 和 /user/sign_in 都可以链接到登录页面。我想知道如何使 /user/sign_in 链接处于非活动状态,这意味着它在导航到该页面时会出现 404 错误。

我的 rake 路线是:

    new_user_session GET    /users/sign_in(.:format)            {:action=>"new", :controller=>"devise/sessions"}
        user_session POST   /users/sign_in(.:format)            {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format)           {:action=>"destroy", :controller=>"devise/sessions"}
       user_password POST   /users/password(.:format)           {:action=>"create", :controller=>"devise/passwords"}
   new_user_password GET    /users/password/new(.:format)       {:action=>"new", :controller=>"devise/passwords"}
  edit_user_password GET    /users/password/edit(.:format)      {:action=>"edit", :controller=>"devise/passwords"}
                     PUT    /users/password(.:format)           {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET    /users/cancel(.:format)             {:action=>"cancel", :controller=>"registrations"}
   user_registration POST   /users(.:format)                    {:action=>"create", :controller=>"registrations"}
new_user_registration GET    /users/sign_up(.:format)            {:action=>"new", :controller=>"registrations"}
edit_user_registration GET    /users/edit(.:format)               {:action=>"edit", :controller=>"registrations"}
                     PUT    /users(.:format)                    {:action=>"update", :controller=>"registrations"}
                     DELETE /users(.:format)                    {:action=>"destroy", :controller=>"registrations"}
              signin GET    /signin(.:format)                   {:action=>"new", :controller=>"devise/sessions"}
             signout GET    /signout(.:format)                  {:action=>"destroy", :controller=>"devise/sessions"}
              signup GET    /signup(.:format)                   {:action=>"new", :controller=>"devise/registrations"}
             command GET    /command(.:format)                  {:action=>"edit", :controller=>"devise/registrations"}

【问题讨论】:

    标签: ruby-on-rails devise routes rake


    【解决方案1】:

    使用devise_for更改默认url的路径和名称

    devise_for :users, :path => '', :path_names => { :sign_in => 'signin', :sign_out => 'signout', :sign_up => 'signup' }
    

    我建议将路径名保留为 sign_in、sign_out 和 sign_up,因为 signin 看起来像乱码。

    此外,从长远来看,有选择地编辑这些默认值可能只会让您的路线更加混乱。因此,除非有充分的理由覆盖默认设置,否则您应该按照设计的建议进行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      • 2017-11-14
      • 2021-03-17
      • 1970-01-01
      • 2018-09-24
      • 2020-09-16
      • 1970-01-01
      相关资源
      最近更新 更多