服务器前缀和rails路由

时间:2009-05-11 14:02:49

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

当我使用路径选项

启动服务器时
 script/server --path=/myapp

有路线

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

然后

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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

那应该为你提供/ myapp / foo的路线

答案 2 :(得分:0)

非常感谢您的回答!

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

我发现了以下内容:

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'}