当我使用路径选项启动服务器时
script/server --path=/myapp
在有路线的同时
map.route 'foo', :controller => 'bar', :action => 'buzz'
然后
ActionController::Routing::Routes.recognize_path('/myapp/foo')
引发错误“没有匹配的路由......”
问题:如何让 Rails 内置路由识别路径前缀?非常感谢!
当我使用路径选项启动服务器时
script/server --path=/myapp
在有路线的同时
map.route 'foo', :controller => 'bar', :action => 'buzz'
然后
ActionController::Routing::Routes.recognize_path('/myapp/foo')
引发错误“没有匹配的路由......”
问题:如何让 Rails 内置路由识别路径前缀?非常感谢!
尝试放入config.action_controller.relative_url_root = "/myapp"
environment.rb 并正常启动您的服务器。
然后 Rails 会将 /myapp/ 附加到您的所有路线
实际上有一个 path_prefix 可用于路由,因此您可以执行以下操作:
map.foo, 'foo', :controller => 'bar', :action => 'buzz', :path_prefix => 'myapp'
那应该为您提供 /myapp/foo 的路线
非常感谢你的回答!
不幸的是,我不能使用 中的: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'}