生成嵌套资源的URL而不使用其父级(不使用浅)

时间:2018-05-19 15:05:10

标签: ruby-on-rails nested-resources

在我们的应用程序中,许多资源嵌套在代表组织的公共资源下。大多数网址都包含以下模式的组织ID:/:organization_id/notifications/:id

我的问题是我总是要让当前的组织生成任何模型的URL。例如,指向现有通知的链接为link_to [@organization, @notification]

由于通知已经属于某个组织,我想知道是否可以使用link_to @notification生成我的网址,它实际上会生成一个包含通知组织ID的网址。我希望模型中的配置能够实现这一点但我在Rails的指南,文档或源代码中找不到任何内容。

我希望保持组织ID在URL中可见,因为这是我们的客户使用的信息。所以我不想在这个问题上使用浅层嵌套资源。

我们正在使用Rails 5.2.0。

1 个答案:

答案 0 :(得分:2)

您需要resolve route definition method

它旨在完全按照您的意愿执行:在将单个模型实例传递给url_for时配置不同的行为(例如,如link_to所示)。

具体来说,在您的config/routes.rb中,例如:

resolve("Notification") do |note|
  [:notification_organization, note.organization, note]
end

听起来你走在正确的轨道上 - 这只是一个路由问题,而不是模型问题。