Generar URL para el archivo en / pública en los carriles 2 ERB vista
-
28-09-2019 - |
Pregunta
En mi carriles (v2.3.8) aplicación Tengo un archivo de recursos estática que he puesto en /public/myfile.kml No hay necesidad para cualquier entorno justo routes.rb especial?
Se sirve muy bien en http: // localhost: 3000 / myfile.kml
Cuando despliego (para pasajeros) que aparece en http: //myserver/myappname/myfile.kml
Todo está bien hasta ahora ...
Tengo una visión (un archivo de erb), que arroja javascript que necesita para hacer referencia a este archivo. Las necesidades de salida sea '/myfile.kml' en el servidor local, y '/myappname/myfile.kml' en la producción, o tal vez el URL completo que el anterior, o tal vez una dirección URL relativa que implica un poco de' ../../ ../'(torpe con RESTful URLs).
¿Debo ser capaz de hacer algo como <% = url_for 'myfile.kml' %>?
o '<% = root_url%> / myfile.kml'
Yo sé que hay una respuesta increíblemente fácil a esta pregunta, pero la verdad es que he tenido suerte para encontrarlo. Muy pocas personas hablan de 'root_url', pero ¿qué es eso? Una variable que pueda hacer referencia en una vista? Se indefinido.
Solución 2
'<%= ENV["RAILS_RELATIVE_URL_ROOT"] %>/myfile.kml'
Otros consejos
No estoy seguro sobre rieles 2.3.8, pero en Rails 3 El valor predeterminado es falso.
editar y config/environments/production.rb
conjunto:
config.serve_static_assets = true
Además, aquí hay un blog que muestra un ayudante para ligarse a un recurso estático (favicon) http://ilconnettivo.wordpress.com/2008/07/28/ favicon-on-rails /
<%= RAILS_ROOT + "/public/myfile.kml" %>
Inspección de rake routes
revela la root_path
ayudante para su uso en puntos de vista. Por ejemplo <%= root_path + 'myfile.kml' %>
Por defecto asignará a los archivos bajo pública / carriles en una aplicación.
La última (> 2.3.6) es Rails.root, ver: http: // joneslee85. wordpress.com/2010/05/27/the-dilemma-of-rails-root-vs-rails_root-complex/
¿Por qué no replicar su entorno de producción a nivel local? Un servidor web no está muy ávidas de recursos y puede ayudar a resolver algunos problemas de configuración de los ecosistemas que estás viendo aquí.