在我们的应用程序中,许多资源嵌套在代表组织的公共资源下。大多数网址都包含以下模式的组织ID:/:organization_id/notifications/:id
。
我的问题是我总是要让当前的组织生成任何模型的URL。例如,指向现有通知的链接为link_to [@organization, @notification]
。
由于通知已经属于某个组织,我想知道是否可以使用link_to @notification
生成我的网址,它实际上会生成一个包含通知组织ID的网址。我希望模型中的配置能够实现这一点但我在Rails的指南,文档或源代码中找不到任何内容。
我希望保持组织ID在URL中可见,因为这是我们的客户使用的信息。所以我不想在这个问题上使用浅层嵌套资源。
我们正在使用Rails 5.2.0。
答案 0 :(得分:2)
您需要resolve
route definition method。
它旨在完全按照您的意愿执行:在将单个模型实例传递给url_for
时配置不同的行为(例如,如link_to
所示)。
具体来说,在您的config/routes.rb
中,例如:
resolve("Notification") do |note|
[:notification_organization, note.organization, note]
end
听起来你走在正确的轨道上 - 这只是一个路由问题,而不是模型问题。