簡體   English   中英

Rails 嵌套資源忽略單個路由

[英]Rails nested resources ignore single route

我的路由中有一個 rails 嵌套資源。

IE

resources :users do
  resources :accounts
end

resources :accounts

上市操作當然是:

GET /users
GET /users/:user_id/accounts

我想擺脫/users路線但保留/users/:id/accounts路線。

知道我怎么能 go 關於這個? 謝謝

使用except: [:index] not 將限制兩條路線。 這是一個荒謬的主張,只需運行rails routes就可以輕松駁倒。 resources的任何選項都沒有“涓涓細流”到嵌套調用。

resources :users, only: [] do
  resources :accounts, only: :index
end

only: []跳過所有“用戶”路由的生成。

這將生成路線:

Prefix        Verb   URI Pattern                          Controller#Action
user_accounts GET    /users/:user_id/accounts(.:format)   accounts#index
# ...

請注意,參數鍵是:user_id而不是:id 如果您真的想打破約定,您需要這樣做:

# don't do this - its stupid
scope '/users/:id', as: :user do
  resources :accounts, only: :index
end

let set only: [] then rails routes 將根據需要生成/users/:id/accounts

resources :users, only: [] do
 resources :accounts # , only: [:index] if you just only keep users/:id/accounts
end
# if you only want to get rid of GET /users
resources :users, except: [:index]
# if you mean you want to get rid all of /users routes (not just only GET /users) then comment above line

這就是scope的用途

scope :users do 
  resources :accounts
end

Rails 路由指南

或者您可以使用這兩種相同的方式,將namespacescope一起使用:

  namespace :users do
    scope ':user_id' do
      resources :accounts
    end
  end

僅使用scope

  scope ':users/:user_id' do
    resources :accounts
  end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM