生成没有父资源的嵌套资源的 URL(不使用 shallow)
Generating the URL of a nested resource without its parent (without using shallow)
在我们的应用程序中,许多资源嵌套在代表组织的公共资源下。大多数 URL 包含组织 ID,格式如下:/:organization_id/notifications/:id
.
我的问题是,我总是必须给当前组织生成 URL 给任何模型。例如,现有通知的 link 将是 link_to [@organization, @notification]
.
由于通知已经属于一个组织,我想知道是否可以使用 link_to @notification
生成我的 URL,它实际上会生成一个包含组织 ID 的 URL的通知。我希望模型中的配置能够实现这一点,但我在指南、文档或 Rails.
的源代码中找不到任何内容
我想让组织 ID 在 URL 中可见,因为这是我们的客户使用的信息。所以我不想使用浅嵌套资源来解决这个问题。
我们正在使用 Rails 5.2.0.
你想要 resolve
route definition method.
它旨在完全满足您的需求:在将单个模型实例传递给 url_for
时配置不同的行为(例如 link_to
所做的)。
具体来说,在您的 config/routes.rb
中,类似于:
resolve("Notification") do |note|
[:notification_organization, note.organization, note]
end
听起来您的方向是正确的 -- 这只是一个路由问题,而不是模型问题。
在我们的应用程序中,许多资源嵌套在代表组织的公共资源下。大多数 URL 包含组织 ID,格式如下:/:organization_id/notifications/:id
.
我的问题是,我总是必须给当前组织生成 URL 给任何模型。例如,现有通知的 link 将是 link_to [@organization, @notification]
.
由于通知已经属于一个组织,我想知道是否可以使用 link_to @notification
生成我的 URL,它实际上会生成一个包含组织 ID 的 URL的通知。我希望模型中的配置能够实现这一点,但我在指南、文档或 Rails.
我想让组织 ID 在 URL 中可见,因为这是我们的客户使用的信息。所以我不想使用浅嵌套资源来解决这个问题。
我们正在使用 Rails 5.2.0.
你想要 resolve
route definition method.
它旨在完全满足您的需求:在将单个模型实例传递给 url_for
时配置不同的行为(例如 link_to
所做的)。
具体来说,在您的 config/routes.rb
中,类似于:
resolve("Notification") do |note|
[:notification_organization, note.organization, note]
end
听起来您的方向是正确的 -- 这只是一个路由问题,而不是模型问题。