Я портирую 2.x приложение для направляющих к rails3; мы назовем это приложением нечто. Приложение нечто является одним разделом большего приложения для направляющих и жизней по main_rails_app.com/foo-app. Ранее мы просто настраиваем следующее в нашей производственной конфигурации приложения нечто, чтобы гарантировать, что наши маршруты приложения нечто работали правильно:
ActionController::Base.relative_url_root = "/foo-app"
Однако с rails3, я теперь добираюсь:
DEPRECATION WARNING: ActionController::Base.relative_url_root is ineffective. Please stop using it.
Я с тех пор изменил запись конфигурации в следующее:
config.action_controller.relative_url_root = "/foo-app"
Это главным образом работает, в котором все вызовы к внешним ресурсам (JavaScript/CSS/изображения) будут использовать/foo-app. Однако ни один из моих маршрутов не изменяется соответственно или помещает иначе, приложение нечто root_path дает мне '/', когда я ожидал бы '/foo-app'.
Два вопроса:
Вы должны уметь обрабатывать все это в файле routes.rb. Оберните все ваши текущие маршруты в область видимости; например.
scope "/context_root" do
resources :controller
resources :another_controller
match 'welcome/', :to => "welcome#index"
root :to => "welcome#index"
end
Затем вы можете проверить свою маршрутизацию с помощью rake routes
, они должны отображать ваши маршруты соответственно, включая корневой каталог контекста (relative_url_root)