Ruby on rails Rails中的用户定义路由

Ruby on rails Rails中的用户定义路由,ruby-on-rails,routing,routes,Ruby On Rails,Routing,Routes,关于Rails中的路由有很多很好的信息。我肯定遗漏了什么,但我似乎找不到一个Rails应用程序的好例子,它允许动态定义用户特定的路由 例如,我的应用程序位于: www.thing.com 。。。并提供用户生成的内容 我想给用户一个选项,定义一个后缀,让他们共享一个定制的URL到他们的内容。例如,如果用户“joe”生成一些汽车信息,他们可能希望通过joescars在以下位置使其可用: www.thing.com/joescars 也许后来他们决定在“carsbyjoe”的名下在: www.t

关于Rails中的路由有很多很好的信息。我肯定遗漏了什么,但我似乎找不到一个Rails应用程序的好例子,它允许动态定义用户特定的路由

例如,我的应用程序位于:

www.thing.com
。。。并提供用户生成的内容

我想给用户一个选项,定义一个后缀,让他们共享一个定制的URL到他们的内容。例如,如果用户“joe”生成一些汽车信息,他们可能希望通过joescars在以下位置使其可用:

www.thing.com/joescars 
也许后来他们决定在“carsbyjoe”的名下在:

www.thing.com/carsbyjoe

我可以处理限制后缀的有效性。有没有一种Rails方法可以编码这种动态路由?

有一种方法可以做到这一点。在
config/routes
文件中,添加一条写有
get'/:user\u route'=>“somecontroller\someaction”的路由
。您必须将其放在最底部,因为路由是从上到下匹配的,这将匹配像
/users
或其他您可能希望定向到其他地方的路由


然后,在控制器中,您可以访问
params[:user\u route]
以显示适当的内容。根据您的需要,有多种方法可将此自定义内容存储在数据库中。您可能有一个表示这些自定义路由的模型,如
CustomRoute.find_by_route(params[:user_route])
,或者每个用户都有一个自定义路由,这样您就可以执行
user.find_by_route(params[:user_route])。自定义页面
和每个
用户
都有一个
自定义页面

您是否尝试过类似
获取“uri/:User\u route'=>“自定义页面#自定义控制器_方法”
。然后,您可以在控制器中使用param[:user_route]实现您想要的功能。请记住,使用通用的
/:uri
是不好的,因为每个随机url都会命中您的数据库,并且每个404都会首先针对数据库进行测试,对我来说,我会尝试将它限制在像
/pages/:uri
这样的东西上