2011-04-13 31 views

Respuesta

10

lo que prefiero hacer, es mantener todo el javascript en un archivo separado.

por ejemplo, lo haría de la siguiente manera (jQuery):

en su diseño:

...

<body data-product-ids="<%= existing_ids.to_json %>" 
     data-products-json="<%= @filter.data.to_json %>"> 

.. en JS:

// create your application namespace 
$.myapp = {}; 
$.myapp.allProductIds = $.parseJSON($('body').attr('data-product-ids')); 
$.myapp.products = $.parseJSON($('body').attr('data-products-json')); 

entonces, entonces lo usará en js como tal:

$.myapp.allProductIds 
+1

¡Gracias! Pero cuando solo necesita uno o dos líneas de código js, ​​¿seguirá utilizando un archivo separado? – wkang

+2

Bueno, sí, es solo para un asunto de "mejores prácticas". Pero aún así, eso hace que su código sea más sólido y mejor estructurado. –

68

En delgado

javascript: 
    var all_product_ids = "#{existing_ids.to_json}"; 
    var products_json = "#{@filter.data.to_json}"; 
19
javascript: 
    var all_product_ids = #{raw existing_ids.to_json}; 
    var products_json = #{raw @filter.data.to_json}; 
+1

tenga cuidado con el ataque ' ' – lidaobing

+1

consulte Rails api para el método' desinfectar' – draw

3

He tenido un problema similar con esto. Usar el código que otros han proporcionado no funcionó para mí porque Slim escapó de mi variable html. Terminé usando Gon. Este es para Sinatra, pero también tienen una joya para Rails. Espero que ayude a otros a tener problemas similares.

3

crear un _your_erb_file_contain_javascript_code.erb primera

Y luego en su archivo delgado javascript: parte:

#{ conditions ? (render 'your_erb_file_contain_javascript_code') : nil} 
1
javascript: 
    var isAdmin = "#{current_user.admin? ? 1 : 0}"; 
Cuestiones relacionadas