我正在使用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
是否可以使用:user_id
为每条路线获得:post_id
参数和resources
参数?
答案 0 :(得分:1)
试试这个
resources :users, param: :user_id
resources :users, only: [] do
resources :posts, param: :post_id
end
答案 1 :(得分:0)
这是不可能的,因为它没用。您唯一的选择是以这种方式将帖子嵌入用户资源:
resources :users, only: [:index, :show] do
resources :posts, only: [:index, :show]
end