【问题标题】:Rails 6: Routing with scope for User model/controllerRails 6:用户模型/控制器范围的路由
【发布时间】:2022-01-05 22:23:40
【问题描述】:

在我的 rails 6 项目(开发模式)中,我已经设置了一个用户模型和设计。 在 routes.rb 我有:

scope :auth do
  devise_for :users
end

resources :users, except: :index
resources :articles, only: [:show, :update]

scope :passport do 
  resources :users, only: :index
  resources :articles, except: [:show, :update]    
end

前缀对文章起作用,但对用户不起作用。 出于某种原因,/passport/users 指的是 users#index 根本没有得到 users_path 前缀 (GET)。 它没有任何前缀。 对 localhost:3000/passport/users 的请求工作正常。

与设计有冲突吗?

我错过了什么,但它是什么?

【问题讨论】:

    标签: ruby-on-rails routes ruby-on-rails-6


    【解决方案1】:

    问题不在设备 gem 中

    你可以试试这个

    scope :auth do
      devise_for :users
    end
    
    scope :passport do 
      resources :users, only: :index
      resources :articles, except: [:show, :update]    
    end
    
    resources :users, except: :index
    resources :articles, only: [:show, :update]
    

    我不知道为什么,但它有效

    【讨论】:

    • 更改订单并没有为我解决问题。它实际上也破坏了我在 routes.rb 中的其他资源。
    • 我又试了一次,现在我总是有任何顺序的正确前缀。说真的我不知道这是什么魔法。
    • 我怀疑范围适用于具有相应视图 (GET) 的方法。例如 new、edit、index、show 我认为它不适用于 POST 方法,例如 create、destroy、update,这就是它们没有获取路径的原因。
    猜你喜欢
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2015-10-12
    • 1970-01-01
    相关资源
    最近更新 更多