我在用户中有一个嵌套的资源:
resources :users do
resources :reservations
end
在我的控制器操作中,我可以使用controller.controller_name获取当前控制器名称。因此,在用户显示操作中,controller.coontroller_name返回"users"。同样,在保留显示操作中,它返回"保留"。
但当我是一个嵌套资源路由时,比如"http://mywesite/users/:id/mutations"我想获得嵌套资源的父控制器,在这种情况下是"users"。有没有任何方法可以使用控制器属性或路由检查器来检索它?我不喜欢regex我的url。
我可以检查我的params[:user_id],但这可能容易出错吗?我可能有一个注册控制器,其中可以设置:user_id。
我想拥有这个父资源的原因是,只有当当前操作与用户有关时,我才想在布局中创建搜索表单,例如,在用户控制器或用户的嵌套资源控制器中执行的所有操作。
在您的示例中http://mywesite/users/:id/mutations将http://mywesite/users/:user_id/mutations
您可以检查params[:user_id].spresent?
请参阅从URL 获取父资源