tag rails jquery ruby-on-rails haml

jquery - rails - Cómo enviar de vuelta js.haml en rieles



ruby on rails import javascript (4)

Tengo una acción crear rails que enviar algunos jquery en un archivo:

create.js.erb

var appearance = $("<%= escape_javascript(render(:partial => @appearance)) %>").effect("highlight", {color: ''#E6ff00''}, 2000); $("#sortable").append(appearance); $("#new_appearance")[0].reset();

Empecé a usar HAML y quiero saber cómo debería convertir esto. ¿Puedo usar js.haml? En caso afirmativo, ¿cómo debería ser el marcado?


En realidad, devolver JS en HAML es bastante fácil, simplemente use el filtro: plain e incluya todo lo que quiera evaluar en # {}.

:plain var appearance = $("#{escape_javascript(render(:partial => @appearance)}").effect("highlight", {color: ''#E6ff00''}, 2000); $("#sortable").append(appearance); $("#new_appearance")[0].reset();

No use el filtro: javascript ya que encerrará todo en una etiqueta que no es necesaria.

Si necesita usar algo de lógica, simplemente ponga: llanura dentro de la anidación.

- if params[:printing] :plain $(''#print-view'').html("#{escape_javascript(render ''print_preview'')}");

Lo siento, ERB.


En un js.haml se vería algo así como

!= "var appearance = $(''<%= escape_javascript(render(:partial => @appearance)) %>'').effect(''highlight'', {color: ''#E6ff00''}, 2000);" != "$(''#sortable'').append(appearance);" != "$(''#new_appearance'')[0].reset();"

Tenga en cuenta la sintaxis HAML! = Que impide que el texto generado sea escapado de HTML. Estoy de acuerdo en que ERB se adapta mejor aquí, pero para mantener la coherencia, es posible que desee seguir el camino de HAML.


Haml realmente tiene la intención de generar HTML. Podría, en teoría, usar create.js.haml , pero ERB tiene mucho más sentido cuando está escribiendo Javascript.


Parece que no necesitas el! = Delante de cada línea. Lo siguiente funciona bien para mí. Estoy usando Rails 3 y la última versión de HAML

$(''#comments_table_header'').after(''#{escape_javascript(render :partial => ''row'', :locals => { :comment => @comment })}'');