生成没有父级的嵌套资源的 URL(不使用浅层)



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

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

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

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

我们使用的是 Rails 5.2.0。

您需要resolve路由定义方法。

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

具体来说,在您的config/routes.rb中,类似于:

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

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

最新更新