我有一项任务是在运行时创建不同网址的映射
在应用程序中,我有一个GUI界面,显示来自routes.rb文件的路由列表
用户可以将该URL更改为与界面不同的名称
例如。 (abc / mno) - 用户可以将它们改为 - (你好)
因此,如果浏览器请求中的用户类型/ hello被重定向到/ abc / mno
我必须将这些映射的路由存储在数据库中
如何在数据库中创建新记录时将动态映射路由添加到已定义的路由(routes.rb)
如何在加载routes.rb文件时从数据库添加路由
我无法弄清楚如何扩展默认路由器,以便它可以包含来自数据库的路由..
答案 0 :(得分:1)
我没有完整的解决方案,但您可以从两种方法开始:
答案 1 :(得分:1)
如果您不想使用机架中间件,则可以使用约束。希望你的动态路由可以限定为什么,比如“/ abc / any-after-here-can-be-dynamic ”,而不是直接根源......
所以,假设您想要基于用户名的动态路由,那么您将执行以下操作:
#config/routes.rb
match '/abc/:route' => "abc#dynamicroute", :contraints => DynamicRouteConstraint.new
#lib/dynamic_route_constraint.rb
class DynamicRouteConstraint < Struct.new
def matches?(request)
User.find_by_first_name(request.params[:route]).present?
end
end
#app/controllers/abc_controller.rb
class AbcController < ApplicationController
def dynamicroute
@user = User.find_by_first_name(params[:route])
#render or redirect, however you wish
end
end