Cómo acceder a las variables de configuración de Ruby desde javascript

Agregué una variable de configuración en application.rb como

module Www
    class Application < Rails::Application
      ...
      config.myurl = "http://localhost:8443/play"
end

Después de hacer clic en algo en mi página, me gustaría usar el valor de esta variable de configuración para obtener mi URL completa, como mypage.js, que tiene

function ClickedOnSomething(someid){
    var fullUrl = <value of config.myurl> + '?id='+someid+'.html'; 
    ...
}

de modo que si, por ejemplo, la identificación de lo que hice clic era 1776, la URL completa sería la cadena http://localhost:8443/play?id=1776.html

Estoy usando Ruby on Rails 3.2.3 y Ruby 1.9.3

Una cosa que probé fue pasar por el controlador de la siguiente manera:

En application_controller.rb agregué

def before_filter
  # This variable will be available in all controller actions and views
  @url_global = Www::Application.config.myurl
end

En application.html.erb agregué

<script type="text/javascript">
  var url_global = "<%= @url_global %>"
</script>

Luego en mypage.js lo hice

function ClickedOnSomething(someid){
    var fullUrl = @url_global + '?id='+someid+'.html'; 
    ...
}

pero @url_global no se reconoce. De hecho, probé muchas variaciones diferentes de usar var en javascript, pero nada me funciona.

preguntado el 12 de junio de 12 a las 18:06

1 Respuestas

Te vi declarar

var url_global = "<%= @url_global %>";

por lo que debe usar url_global en la función, no @url_global;

var fullUrl = url_global + '?id='+someid+'.html'; 

Estoy en lo correcto?

Respondido el 12 de junio de 12 a las 19:06

Lo intenté de esa manera sin la @ y tampoco se reconocía la variable. - leopardo de las nieves

¿Puedes abrir la página renderizada usando la fuente de vista en tu navegador? Envíame el código que rindió: James

cambiarlo a url_global sin @ funcionó después de todo. Acabo de darme cuenta de que mi problema era que en application_controller.rb tenía before_filter dos veces. Así que tenía la clase ApplicationController < ActionController::Base before_filter :set_cache_buster y luego tenía def before_filter # Esta variable estará disponible en todas las acciones y vistas del controlador @url_global = Www::Application.config.myurl end Así que supongo que es eso la definición se omitió por completo. Sin embargo, tengo curiosidad por saber si hay una mejor manera de acceder a las variables de configuración en javascript: leopardo de las nieves

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.