【问题标题】:Server prefix and rails routes服务器前缀和 rails 路由
【发布时间】:2010-10-25 07:08:44
【问题描述】:

当我使用路径选项启动服务器时

 script/server --path=/myapp

有路线的时候

 map.route 'foo', :controller => 'bar', :action => 'buzz'

然后

ActionController::Routing::Routes.recognize_path('/myapp/foo')

引发错误“没有匹配的路由...”

问题:如何让 Rails 内置路由识别路径前缀? 非常感谢!

【问题讨论】:

    标签: ruby-on-rails ruby routing path prefix


    【解决方案1】:

    实际上有一个路径前缀可用于路由,因此您可以执行以下操作:

    map.foo, 'foo', :controller => 'bar', :action => 'buzz', :path_prefix => 'myapp'
    

    这应该为您提供 /myapp/foo 的路线

    【讨论】:

      【解决方案2】:

      尝试将config.action_controller.relative_url_root = "/myapp" 放入environments.rb 并正常启动您的服务器。

      然后 Rails 会将 /myapp/ 附加到您的所有路线

      【讨论】:

        【解决方案3】:

        非常感谢您的回答!

        不幸的是,我不能在map.foo 中使用:path_prefix 选项,因为情况并非总是如此(最终用户应负责设置或不设置前缀,而不用担心任何路由)。

        我发现了以下内容:

        path = '/myapp/foo'
        
        if relative_url_root = ActionController::Base.relative_url_root
          path.sub!(/\A#{relative_url_root}/i, '')
        end
        
        params = ActionController::Routing::Routes.recognize(path)
        # => {:controller => 'bar', :action => 'buzz'}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-05
          • 1970-01-01
          • 2014-08-28
          • 2019-06-23
          相关资源
          最近更新 更多