template rails example ruby-on-rails ruby slim-lang

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?



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}";