1

我有这样的路线:

resources :users do
  resources :projects
end

我希望能够访问这样的路线:

/users/1/projects/1

/projects/1

这可能吗?我该如何设置?我在我的应用程序中遇到问题,我们希望用户能够通过 /users/:id/projects/:id 查看他们自己的项目,但也可以在其他页面上查看所有创建的项目,比如这个 /projects 或一个项目和一个 id,比如这个 /projects/:id。我觉得我错过了一些东西,我应该摆脱嵌套路线吗?或者我可以两者兼得。

4

2 回答 2

2

你可以两者兼得。只需添加resources :projects到您的 routes.rb 即可。然后,在您的 ProjectsController 中,您必须执行以下操作:

def index
  if params[:user_id]
    @projects = User.find(params[:user_id]).projects
  else
    @projects = current_user.projects
  end
end

我假设您的身份验证系统current_user为您的控制器提供了方法(就像大多数人一样)

于 2012-08-10T08:09:44.383 回答
2

根据您的需要,您当然可以有两种方式。

resources :users do
  resources :projects 
end
resources :projects

将在 /users/:user_id/projects/:id 和 /projects/:id 中为您提供您的网址。

您可以在项目控制器中检查 params[:user_id] 是否存在并采取必要的措施。

于 2012-08-10T08:10:13.590 回答