RoR link_to и пути к ресурсам

У меня есть приложение RoR (1.9.3 - 3.2), работающее на IIS 7.5 через модуль HeliconZoo. Он находится в подкаталоге, например http://server/application/.

Теперь, если я использую link_to с прямым расположением, например ‹% link_to" / users "%>, он связан с http://server/users вместо http://server/application/users (при установке ссылки на действие контроллера работает нормально) .

Кроме того (что здесь является более серьезной проблемой), приложение предварительно компилирует все активы в server / application / public / assets, но при рендеринге ищет их в server / public / assets. Если я установил config.assets.prefix, активы также будут отображаться в другом месте («/ application / ...» как добавление каждый раз), что приводит к постоянной рассинхронизации, и активы никогда не загружаются. Я могу обойти это, изменив config.assets.prefix на «/ application / public / assets» для предварительной компиляции и вернув его обратно к значениям по умолчанию после, но это довольно раздражает.

Есть ли какая-то конфигурация, указывающая рендеру на добавление префикса ("/ application") к прямым ссылкам и ресурсам?


person Miiller    schedule 12.04.2012    source источник


Ответы (2)


Я никогда не использовал IIS или HeliconZoo для развертывания Rails, так что это может не сработать, но я все равно постараюсь ответить, поскольку мне кажется, что вы действительно пытаетесь сделать, чтобы Rails вас понял » повторно развернув его во вложенную папку, и это не так уж сложно. Просто инкапсулируйте все в вашем routes.rb в область видимости, например:

scope "/context_root" do
   resources :controller
   resources :another_controller
   match 'welcome/', :to => "welcome#index"
   root :to => "welcome#index"
end

Я скопировал этот ответ прямо из здесь, что может предоставить вам более полезную информацию.

person Veraticus    schedule 12.04.2012
comment
При этом активы загружаются правильно, но rails ожидает, что остальная часть приложения будет в / server / application / application, где, очевидно, ничего нет, поэтому я каждый раз получаю ошибку 404. - person Miiller; 12.04.2012

Попробуйте открыть диспетчер IIS, перейдите в папку «приложение», откройте контекстное меню и выберите «Преобразовать в приложение». Обычно никаких особых действий с кодом Ruby не требуется.

person Slava    schedule 13.04.2012
comment
Не работает. Я перепробовал почти все настройки в IIS, похоже, ничего не работает. Действия контроллера связаны с приложением / префиксом, поэтому я предполагаю, что IIS предполагает, что приложение находится в корне, поэтому прямые ссылки всегда идут в корень веб-страницы, а не в приложение. Не могу понять почему ... - person Miiller; 17.04.2012