Ruby on rails 3 路由中没有父级ID的嵌套资源

Ruby on rails 3 路由中没有父级ID的嵌套资源,ruby-on-rails-3,routes,nested-resources,Ruby On Rails 3,Routes,Nested Resources,我有两个资源: resources :users do resources :cars end 该协会是: 一个用户可以有很多车 汽车属于使用者 在进行这种嵌套资源搜索时,我会得到如下URL: /users/:id/cars/new 我的问题是: resources :users do collection do resources :cars end end 如果只做/cars/new(不带/users/:id)更有意义,因为我从当前登录的用户那里获得:id,我将

我有两个资源:

resources :users do
 resources :cars
end
该协会是:

  • 一个用户可以有很多车
  • 汽车属于使用者
在进行这种嵌套资源搜索时,我会得到如下URL:

/users/:id/cars/new 
我的问题是:

resources :users do
  collection do
    resources :cars
  end
end
如果只做
/cars/new
(不带/users/:id)更有意义,因为我从当前登录的用户那里获得
:id
,我将如何在routes.rb中解决这个问题

resources :cars, :only => [:new, :create] # if you don't need all actions
resources :users do
  resources :cars
end
车内控制器

before_filter :find_user
...
private
def find_user
  @user = params[:user_id] ? User.find(params[:user_id]) : current_user
end

我根本不会使用嵌套路由。可以使用嵌套模型,而不必使用嵌套管线。只需从会话中加载当前用户(您可能已经这样做了),并确保没有人可以访问cars控制器,除非他们已登录。

此问题的正确答案是:

resources :users do
  collection do
    resources :cars
  end
end

+1并确保您只装载属于当前用户的汽车:D