Question

J'ai une action de création de rails qui renvoie une requête dans un fichier:

create.js.erb

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

J'ai commencé à utiliser HAML et je veux savoir comment je devrais convertir cela. Puis-je utiliser js.haml? Si oui, à quoi devrait ressembler le balisage?

Était-ce utile?

La solution

En fait, il est assez facile de retourner JS dans HAML. Utilisez simplement le filtre: plain et mettez tout ce que vous souhaitez évaluer dans # {}.

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

N'utilisez pas le filtre javascript: il enfermera tout dans une balise inutile.

Si vous devez utiliser une logique, placez simplement le: plain dans l'imbrication.

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

Désolé, ERB.

Autres conseils

Haml voulait vraiment générer du HTML. Vous pouvez, en théorie, utiliser create.js.haml , mais ERB est beaucoup plus logique lorsque vous écrivez en Javascript.

On dirait que vous n’avez pas besoin de!! devant chaque ligne. Ce qui suit fonctionne très bien pour moi. J'utilise Rails 3 et la dernière version de HAML

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

Dans un js.haml cela ressemblerait à quelque chose comme

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

Notez la syntaxe HAML! = qui empêche le texte généré d'être échappé en HTML. Je conviens que ERB convient mieux ici, mais pour des raisons de cohérence, vous voudrez peut-être rester dans l’esprit HAML.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top