ruby on rails - rails - ¿Cómo incrustar código Ruby dinámico en la sección "javascript" en las plantillas Slim?
slim rails example (7)
De una sola mano:
javascript_tag do
== "var all_product_ids = #{existing_ids.to_json};"
== "var products_json = #{@filter.data.to_json};"
o:
= %Q{
var all_product_ids = #{existing_ids.to_json};
var products_json = #{@filter.data.to_json};
}
¿Hay mejores soluciones para esto?
Desde el párrafo de interpolación de texto https://github.com/slim-template/slim
SLIM se escapa de HTML por defecto. Para evitar el mismo uso # {{content}} para # {content}
En delgado
javascript:
var all_product_ids = "#{existing_ids.to_json}";
var products_json = "#{@filter.data.to_json}";
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'') );
así, entonces lo usarás en js así:
$.myapp.allProductIds
Tuve un problema similar con esto. Usar el código que otros me han proporcionado no me funcionó porque slim html escapaba de mi variable. Terminé usando Gon . Este es para Sinatra, pero también tienen una gema para Rails. Espero que ayude a otros a tener problemas similares.
primero crea un _your_erb_file_contain_javascript_code.erb
Y luego en tu archivo delgado javascript:
parte:
#{ conditions ? (render ''your_erb_file_contain_javascript_code'') : nil}
javascript:
var all_product_ids = #{raw existing_ids.to_json};
var products_json = #{raw @filter.data.to_json};
javascript:
var isAdmin = "#{current_user.admin? ? 1 : 0}";