你好,我有很多路线,如下所示
resources :users do
resources :shipping_methods, only: [:new, :create, :edit, :update, :destroy]
resources :cart_items, only: [:create, :index, :destroy]
resources :relationships, only: [:create, :destroy]
resources :addresses, only: [:new, :create, :edit, :update, :destroy]
end它们都会产生以下路线
/users/:id/nested_route
例如,编辑传送方法视图生成以下内容
/users/1/shipping_methods/11/edit
我如何使所有这些路线产生这样的:
/username/nested_route
例如,上面的编辑传送方法视图应该生成以下内容:
/username/shipping_methods/11/edit
发布于 2017-01-24 11:36:32
这是做这个的方法之一。对path资源重写users资源,对子资源使用collection。它给了你路径/:user_id/shipping_methods/new
resources :users, path: ':user_id' do
collection do
resources :shipping_methods, only: [:new, :create, :edit, :update, :destroy]
resources :cart_items, only: [:create, :index, :destroy]
resources :relationships, only: [:create, :destroy]
resources :addresses, only: [:new, :create, :edit, :update, :destroy]
end
end覆盖to_param方法使User模型在路由器中使用username而不是id
def to_param
self.username.parameterize
end要在子路由器中查找用户,请使用User.find_by(username: params[:user_id]。
https://stackoverflow.com/questions/41826438
复制相似问题