【问题标题】:Can I use "devise_for", with "only" and "excepted"?我可以将“devise_for”与“only”和“excepted”一起使用吗?
【发布时间】:2023-04-10 04:38:01
【问题描述】:

我正在建立一个 Rails 网站,并设置设计路线。到目前为止,我没有任何问题,一切正常。但是,由于网站在管理和访问者位置之间划分,我希望用户能够从看起来像 /admin/users/1/edit 的路径编辑他的个人资料,并从 /user/sign_inuser/sign_out 登录/退出(没有admin 前缀)。

到目前为止,我设法使用或不使用前缀,但不能同时进行。

这是我的路由文件的相关部分:

devise_for :users, only: %w['session#new session#destroy']
get '/admin' => 'home#admin', as: :admin

authenticate :user do
  scope '/admin' do
    resource :basics
    resources :portfolios
    resources :articles
    devise_for :users, excepted: %w['sessions#new session#destroy']
  end
end

这是rake routes的结果:

new_user_session GET    /admin/users/sign_in(.:format)       devise/sessions#new
            user_session POST   /admin/users/sign_in(.:format)       devise/sessions#create
    destroy_user_session DELETE /admin/users/sign_out(.:format)      devise/sessions#destroy
       new_user_password GET    /admin/users/password/new(.:format)  devise/passwords#new
      edit_user_password GET    /admin/users/password/edit(.:format) devise/passwords#edit
           user_password PATCH  /admin/users/password(.:format)      devise/passwords#update
                         PUT    /admin/users/password(.:format)      devise/passwords#update
                         POST   /admin/users/password(.:format)      devise/passwords#create
cancel_user_registration GET    /admin/users/cancel(.:format)        devise/registrations#cancel
   new_user_registration GET    /admin/users/sign_up(.:format)       devise/registrations#new
  edit_user_registration GET    /admin/users/edit(.:format)          devise/registrations#edit
       user_registration PATCH  /admin/users(.:format)               devise/registrations#update
                         PUT    /admin/users(.:format)               devise/registrations#update
                         DELETE /admin/users(.:format)               devise/registrations#destroy
                         POST   /admin/users(.:format)               devise/registrations#create

如何做到这一点?

提前谢谢你

【问题讨论】:

    标签: ruby-on-rails devise routes


    【解决方案1】:

    我认为这可能只是一个错字,但请尝试更改:

    devise_for :users, excepted: %w[sessions#new session#destroy]
    

    到:

    devise_for :users, except: %w[sessions#new session#destroy]
    

    【讨论】:

    • 你也不应该写%w['sessions#new session#destroy'],只要写%w[sessions#new session#destroy]就可以了(会产生一个字符串数组)
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2020-08-04
    • 2018-10-23
    • 2011-02-22
    • 2021-03-16
    • 2016-11-20
    • 2019-01-25
    • 2011-06-11
    相关资源
    最近更新 更多