Префикс сервера и маршруты рельсов - PullRequest
2 голосов
/ 11 мая 2009

Когда я запускаю сервер с параметром пути

 script/server --path=/myapp

при наличии маршрута

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

тогда

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

выдает ошибку "Не найдено ни одного маршрута ..."

Вопрос: Как сделать так, чтобы встроенная маршрутизация Rails распознавалась с префиксом пути? Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 11 мая 2009

Попробуйте поместить config.action_controller.relative_url_root = "/myapp" в environment.rb и нормально запустить свой сервер.

Тогда Rails добавит / myapp / ко всем вашим маршрутам

0 голосов
/ 11 мая 2009

Большое спасибо за ваши ответы!

к сожалению, я не могу использовать опцию :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'}
0 голосов
/ 11 мая 2009

На самом деле для маршрутов доступен path_prefix, поэтому вы можете сделать что-то вроде этого:

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

Это должно дать вам маршрут для / myapp / foo

...