Rails 路由上的静态嵌套资源参数名称
Static nested resource params name on Rails routes
我正在玩 Rails 路由,但我不知道如何管理它。问题出在 user_posts(1)
和 user(4)
路由上,参数有不同的名称 - id
和 user_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
我正在玩 Rails 路由,但我不知道如何管理它。问题出在 user_posts(1)
和 user(4)
路由上,参数有不同的名称 - id
和 user_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