加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:36:45 所属栏目:百科 来源:网络整理
导读:我希望能够根据我的数据库中的信息动态地将URL映射到控制器. 我正在寻找功能上等同于这一点的功能(假设View模型): map.route '/:view_name',:controller = lambda { View.find_by_name(params[:view_name]).controller } 其他人建议dynamically rebuilding
我希望能够根据我的数据库中的信息动态地将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中测试的一个变体.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读