Создать 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 ответов
Я не уверен насчет 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/
Осмотр 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/
Почему бы просто не повторить свою производственную среду локально? Веб-сервер не очень требователен к ресурсам и может помочь решить некоторые проблемы с настройкой экосистемы, которые вы видите здесь.