Rails 4.2路由忽略部分a URL

Rails 4.2 routing to ignore part of a URL

我的第一个 SO 问题...请温柔 :)

我对 Rails 4.2 应用程序有特定的路由要求,但我正在努力实现它。我的客户为其成员提供一个网站来销售公司的产品并赚取销售佣金(有点像安利)......基本上是一个美化的会员计划。他们URL的模式是https://www.company.com/membername/products/something-you-can-buy。要求是他们在我为他们构建的新应用程序中保留此模式。

成员名部分可以是任何内容,此应用程序将无法访问现有的用户数据库...我们需要 rails 忽略 url 的成员名部分并处理基于路由的在 URL 的其余部分。所以如果 URL 是 https://www.company.com/hephalump/products/hamburger 我们需要路由忽略 hephalump 位,但仍然保留在 URL 中,并根据 products/hamburger 部分处理路由。客户还需要在整个应用程序中保留 hephalump 位,我们需要能够在购买时将其作为参数捕获(这很容易)。

两天来我一直在用这个问题撞墙,但没有成功...任何帮助将不胜感激。

有很多方法可以做到这一点。这是一个:

 get '/:_member/products/:product_name' => 'products#show'

用正确的控制器名称前缀替换 products#show 中的 products,并用正确的操作名称替换 show。在该控制器中 params 将同时具有 :_member:product_name 键,您可以忽略 :_member 键。

您还可以对可以表示成员或产品名称的模式添加约束,例如:

 get '/:_member/products/:product_name' => 'products#show',
   contraint: { _member: /\w+/ }