Ruby on rails Rails服务器url不适用于嵌套路由

Ruby on rails Rails服务器url不适用于嵌套路由,ruby-on-rails,ruby,ruby-on-rails-6,Ruby On Rails,Ruby,Ruby On Rails 6,我正在尝试获取一个类别中的租金列表。在rails控制台中,查询可以很好地工作,但是如果我键入 将返回所有租金的列表,即使不属于该类别的租金也是如此 在rails控制台中 irb(main):002:0> rental.categories Category Load (0.3ms) SELECT "categories".* FROM "categories" INNER JOIN "rental_categories" O

我正在尝试获取一个类别中的租金列表。在rails控制台中,查询可以很好地工作,但是如果我键入 将返回所有租金的列表,即使不属于该类别的租金也是如此

在rails控制台中

irb(main):002:0> rental.categories
  Category Load (0.3ms)  SELECT "categories".* FROM "categories" INNER JOIN "rental_categories" ON "categories"."id" = "rental_categories"."category_id" WHERE "rental_categories"."rental_id" = ? /* loading for inspect */ LIMIT ?  [["rental_id", 1], ["LIMIT", 11]]
=> #<ActiveRecord::Associations::CollectionProxy [#<Category id: 7, name: "2 bedroom", created_at: "2021-05-31 20:37:58.920051000 +0000", updated_at: "2021-05-31 20:37:58.920051000 +0000">]>
irb(main):003:0> 
在routes.rb中

Rails.application.routes.draw do
  resources :categories do
    resources :rentals
  end
  resources :rentals do
    resources :categories
  end
end


我哪里出错了?

您的RentalControllerIndex操作说明了什么?它是否实际使用category_id参数?资源不会被magic限定范围,您仍然需要在控制器中放置正确的逻辑。索引操作是默认的@rentals=Rental。allAs Tom提到过,magic不会发生这种事情。租赁。全部指从租赁中选择*。路由允许您访问url中的参数。因此,您需要使用类似@rentals=Category.findparams[:Category\u id].rentals的内容。通常会将其分为两行,但这是一条注释,因此……此外,您不希望在routes中使用第二个街区。第一个就可以了。两条路线都有并不一定是错的,只是不寻常,可能不是你真正想要的。您实际上想要定义哪些路线??除了所有显示/编辑/更新/删除路由的副本之外,您当前还定义了所有4个:/categories、/categories//rentals、/rentals、/rentals//categories。
Rails.application.routes.draw do
  resources :categories do
    resources :rentals
  end
  resources :rentals do
    resources :categories
  end
end