我有这样的路线:
resources :users do
resources :projects
end
我希望能够访问这样的路线:
/users/1/projects/1
和
/projects/1
这可能吗?我该如何设置?我在我的应用程序中有问题,我们希望用户能够通过/ users /:id / projects /:id看到他们自己的项目,但在其他页面上我们只想看到创建的所有项目,像这样/项目或项目和id,像这样/ projects /:id。我觉得我错过了什么,我应该摆脱嵌套路线吗?或者我可以同时拥有两者。
答案 0 :(得分: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
方法(就像大多数人那样)
答案 1 :(得分:2)
根据您的需要,您可以两种方式。
resources :users do
resources :projects
end
resources :projects
将在/ users /:user_id / projects /:id和/ projects /:id中为您提供您的网址。
您可以检查项目控制器是否存在params [:user_id]并采取必要的措施。