Domanda

Ho un'azione di creazione di rotaie che restituisce alcuni jquery in un file:

create.js.erb

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

Ho iniziato a usare HAML e voglio sapere come dovrei convertirlo. Posso usare js.haml? In tal caso, come dovrebbe essere il markup?

È stato utile?

Soluzione

In realtà, restituire JS in HAML è abbastanza semplice, basta usare il filtro: plain e racchiudere tutto ciò che si desidera valutare in # {}.

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

Non utilizzare il filtro: javascript poiché racchiuderà tutto in un tag che non è necessario.

Se devi usare un po 'di logica, inserisci semplicemente: plain all'interno del nesting.

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

Siamo spiacenti ERB.

Altri suggerimenti

Haml voleva davvero generare HTML. In teoria potresti usare create.js.haml , ma ERB ha molto più senso quando scrivi Javascript.

Beh, sembra che non sia necessario! = davanti a ogni riga. Quanto segue funziona bene per me. Sto usando Rails 3 e l'ultima versione di HAML

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

In un js.haml sarebbe simile a

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

Nota la sintassi HAML! = che impedisce al testo generato di essere sottoposto a escape HTML. Sono d'accordo sul fatto che ERB si adatti meglio qui, ma per la coerenza, potresti voler continuare su HAML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top