2

我有两个资源:

resources :users do
 resources :cars
end

该协会是:

  • 一个用户可以有很多辆车
  • 一辆车属于一个用户

在进行这种嵌套资源时,我会得到如下网址:

/users/:id/cars/new 

我的问题是:

如果只做/cars/new(没有 /users/:id)更有意义,因为我:id从 current_user 登录,我将如何在路由中解决这个问题?

4

3 回答 3

4

这个问题的正确答案是:

resources :users do
  collection do
    resources :cars
  end
end
于 2014-12-17T20:38:02.360 回答
3

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

于 2012-06-16T18:01:08.090 回答
0

在路线.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
于 2012-06-16T17:54:12.873 回答