Создать URL для файла в /public в Rails 2 ERB view

В моем приложении rails (v2.3.8) у меня есть статический файл ресурсов, который я поместил в /public/myfile.kml Нет необходимости в каких-либо специальных настройках rout.rb, верно?

Он отлично работает на http://localhost:3000/myfile.kml

Когда я развертываю (для пассажира), он появляется по адресу http://myserver/myappname/myfile.kml

Пока все хорошо...

У меня есть представление (файл erb), который выбрасывает JavaScript, который должен ссылаться на этот файл. Выходные данные должны быть '/myfile.kml' на localhost и '/myappname/myfile.kml' в производственном процессе, или, возможно, полные URL-адреса, как указано выше, или, возможно, относительный URL, включающий немного '../../../' (неудобно с RESTful URL).

Должен ли я быть в состоянии сделать что-то вроде <% = url_for 'myfile.kml'%>?

или '<% = ROOT_URL%>/ myfile.kml'

Я знаю, что есть безумно простой ответ на этот вопрос, но, честно говоря, мне не повезло найти его. Довольно много людей говорят о root_url, но что это? Переменная я могу ссылаться в представлении? Это не определено.

6 ответов

Решение
'<%= ENV["RAILS_RELATIVE_URL_ROOT"] %>/myfile.kml'

Я не уверен насчет Rails 2.3.8, но в Rails 3 это значение по умолчанию равно false.

редактировать config/environments/production.rb и установить:

config.serve_static_assets = true

Кроме того, вот сообщение в блоге, в котором показан помощник для ссылки на статический ресурс (favicon) http://ilconnettivo.wordpress.com/2008/07/28/favicon-on-rails/

<%= RAILS_ROOT + "/public/myfile.kml" %>

Осмотр rake routes показывает помощника root_path для использования в представлениях. Например <%= root_path + 'myfile.kml' %> По умолчанию будет отображаться на файлы в public/ в приложении rails.

Последним (>2.3.6) является Rails.root, см. Http://joneslee85.wordpress.com/2010/05/27/the-dilemma-of-rails-root-vs-rails_root-complex/

Почему бы просто не повторить свою производственную среду локально? Веб-сервер не очень требователен к ресурсам и может помочь решить некоторые проблемы с настройкой экосистемы, которые вы видите здесь.

Другие вопросы по тегам