2012-05-09 237 views
0

我对Rails比较陌生,并且忙于构建具有各种访问级别的应用程序,例如global_admin和company_admin。现在,company_admin只能访问特定的公司,而不能访问其他公司。检查param是否存在

我的路线:

resources :companies do 
    resources :groups do 
     resources :users 
    end 
    end 

我创建了一个帮手来检查访问包含以下内容:

if params[:company_id].present? 
    @company = Company.find(params[:company_id]) 
    ... 

所以,如果我打电话,例如^ /公司/ 1 /组^ /公司/ 1/groups/1/users查询返回true并找到company_id,但如果我打电话给^/companies/1或^/companies/2,它将返回false。如果它(或者至少似乎是)存在,为什么它不接收company_id?

在此先感谢!

回答

1

当您不访问嵌套资源时,params[:company_id]会变为params[:id]

同组的东西。如果您访问/companies/1/groups/1,params[:id]会为您提供该组的ID,但如果您访问/companies/1/groups/1/users/1,则params[:id]会给您用户的ID,而组的ID将在params[:group_id]

+0

非常好!非常感谢先生:) – user1224344

+0

不要忘记标记迪伦的回答是接受的答案:)! –

+0

没有意识到这个功能,谢谢,完成:) – user1224344