【问题标题】:Using nested routes Rails 3 without actually allowing access to the parent resource使用嵌套路由 Rails 3 而不实际允许访问父资源
【发布时间】:2011-07-16 00:59:16
【问题描述】:

我使用的是 Rails 3,我有两个模型 EquipmentGroup 和 Reservation。我希望预订成为设备组的嵌套资源,以便我可以使用以下 URL 访问它们:

/equipment_groups/:equipment_group_id/reservations/:id

但是,我不想为设备组创建路线。我可以通过以下方式实现这一点,但这似乎是一个 hack:

resources :equipment_groups, :only => [] do
  resources :reservations
end

有没有更好的方法来做到这一点?我似乎无法在文档中轻松找到答案。

【问题讨论】:

    标签: ruby-on-rails-3 nested-routes


    【解决方案1】:

    您的方法 - 这是一种标准方法,没有比这更好的方法了。

    【讨论】:

      【解决方案2】:

      我可以想到几种方法来做到这一点。一种方法是您在上面所做的。但是,您似乎不需要公开设备组控制器或其任何操作,所以以下应该就可以了:

      scope "/equipment_groups" do
          resources :reservations
      end
      

      scope 块会将“/equipment_groups”附加到其中的每条路线。这基本上会“伪造”一个嵌套路由。

      【讨论】:

      • 使用scope而不是resources,你失去了一些url生成的魔力。例如,equipment_group_reservation_path(@equipment_group, @reservation) 将不起作用。我更喜欢问题本身中建议的解决方案,我不认为它是 hack。
      • 这行不通!使用这种方法,您将拥有相似的路线,但没有父 ID,也没有任何生成路线的助手。
      猜你喜欢
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多