Rails 路由上的静态嵌套资源参数名称

Static nested resource params name on Rails routes

我正在玩 Rails 路由,但我不知道如何管理它。问题出在 user_posts(1)user(4) 路由上,参数有不同的名称 - iduser_id

我想要实现的是同一资源的静态参数名称。

我有这个路由文件

Rails.application.routes.draw do
  shallow do
    resources :users, module: :users, only: [:index, :show] do
      resources :posts, module: :posts, only: [:index, :show]
    end
  end
end

生成的路线是

   user_posts(1) GET  /users/:user_id/posts(.:format)      users/posts/posts#index
   post(2) GET        /posts/:id(.:format)                 users/posts/posts#show
   users(3) GET       /users(.:format)                     users/users#index
   user(4) GET        /users/:id(.:format)                 users/users#show

我尝试了 resources :user param: :user 但在 user_posts 生成的路线是 /users/:user_user_id/posts

是否可以使用 resources 为每个路由实现 :user_id 参数和 :post_id 参数?

试试这个

resources :users, param: :user_id
resources :users, only: [] do
    resources :posts, param: :post_id
end

这是不可能的,因为它没用。您唯一的选择是以这种方式将 post 嵌套到用户资源中:

resources :users, only: [:index, :show] do
    resources :posts, only: [:index, :show]
end