ruby-on-rails – 动态URL – > Rails中路由的控制器映射

我希望能够根据我的数据库中的信息动态地将URL映射到控制器.

我正在寻找功能上等同于这一点的功能(假设View模型):

map.route '/:view_name',:controller => lambda { View.find_by_name(params[:view_name]).controller }

其他人建议dynamically rebuilding the routes,但这对我来说不起作用,因为可能有数千个视图映射到同一个控制器

解决方法

这个问题很旧,但我觉得很有趣.可以使用路由器的路由到Rack端点的功能,在Rails 3中创建一个全面的解决方案.

创建以下机架类:

class MyRouter
      def call(env)
        # Matched from routes,you can access all matched parameters
        view_name= env['action_dispatch.request.path_parameters'][:view_name]

        # Compute these the way you like,possibly using view_name
        controller= 'post' 
        my_action= 'show'

        controller_class= (controller + '_controller').camelize.constantize
        controller_class.action(my_action.to_sym).call(env)
      end
    end

路线

match '/:view_name',:to => MyRouter.new,:via => :get

提示从http://guides.rubyonrails.org/routing.html#routing-to-rack-applications开始说:“对于好奇,”#索引“实际上扩展到PostsController.action(:index),它返回一个有效的Rack应用程序.

在Rails 3.2.13中测试的一个变体.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...