【问题标题】:Check the current parent controller of a nested resource检查嵌套资源的当前父控制器
【发布时间】:2012-03-22 21:27:10
【问题描述】:

我在用户中有一个嵌套资源:

resources :users do
  resources :reservations
end

在我的控制器操作中,我可以使用 controller.controller_name 获取当前控制器名称。因此,在用户显示操作中,controller.controller_name 返回“用户”。同样,在预订显示操作中,它返回“预订”。

但是当我是像“http://mywesite/users/:id/mutations”这样的嵌套资源路由时,我想获取嵌套资源的父控制器,在这种情况下是“用户”。有没有办法使用控制器属性或路由检查器来检索它?我不喜欢正则表达式我的网址。

我可以检查我的参数[:user_id],但这是否容易出错?我可能有一个注册控制器,可以在其中设置 :user_id。

我想要这个父资源的原因是因为我想在我的布局中创建一个搜索表单,只有当当前操作与用户有关时,例如。在用户控制器或用户的嵌套资源控制器中执行的所有操作。

【问题讨论】:

    标签: ruby-on-rails routing controller nested-resources


    【解决方案1】:

    在您的示例中,http://mywesite/users/:id/mutations 将是 http://mywesite/users/:user_id/mutations

    你可以检查 params[:user_id].present?

    Getting the parent resource from the URL

    【讨论】:

    • 我投了赞成票,因为它在大多数情况下都有效。但是,有时您想知道主资源是什么,而不管您是否访问嵌套资源。为此,这无济于事。
    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    相关资源
    最近更新 更多