2012-05-03 8 views
8

hola he estado tratando de obtener el entorno actual en rieles, pero creo que estoy haciendo algo mal con mi javascript, pero no parece saber qué. en mis application.js tengo ...cómo obtener entorno en el archivo javascript en la aplicación de raíles

var rails_env = '<%= Rails.env -%>'; 
alert(rails_env); 
alert(rails_env.value); 
if(rails_env == 'development'){ 
    alert('inside if') 
    var indexName = "idx"; 
} 
else{ 
    alert('inside else') 
    var indexName = "idx_production"; 
} 

siempre entra en mi estado de cuenta más, incluso si estoy en el modo de desarrollo. ¿Qué estoy haciendo mal? gracias

cómo conseguir entorno en el archivo javascript en carriles de aplicación

ducto activo
+2

Puede confirmar que la varilla 'Rails.env' ¿se está publicando iable en el script? Es posible que necesite cambiar la extensión a 'application.js.erb' para asegurarse de que se haya analizado – rjz

+0

hmm en mi primera alerta, y dirá <% = Rails.env -%>. luego en mi 2º no está definido. ¿Lo va a cambiar a application.js.erb? como mi tubería? – david

+0

¡funciona gracias! – david

Respuesta

10

rieles Will activos solamente preproceso que se marquen para el análisis. Si esos activos van a terminar en CSS, JS o lo que sea, puede marcar los archivos para analizarlos ajustando la extensión del archivo.

En este caso, cuando intente generar una variable ERB, deberá cambiar la extensión del archivo a application.js.erb.

Hay una discusión ampliada del preprocesador here.

+0

¡gracias por su ayuda! – david

34

No necesita pasarlo a su archivo javascript directamente. Puede hacerlo en el archivo erb vista como esta por ejemplo:

<script> 
    window._rails_env = "<%= Rails.env %>" 
</script> 

o mejor esto:

<%= javascript_tag do %> 
    window._rails_env = "<%= Rails.env %>" 
<% end %> 

o el mejor (en mi humilde opinión) esto:

<body data-env="<%= Rails.env %>"> 
    ... 

y luego:

var railsEnv = $('body').data('env') 
+0

gracias por la idea! Lo tendré en mente =) – david

Cuestiones relacionadas