在我们的应用程序中,许多资源嵌套在代表组织的公共资源下。大多数 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
听起来你走在正确的轨道上——这只是一个路由问题,而不是一个模型问题。