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.

¿Fue útil?

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.

¿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í.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top