Wie zurück zu senden js.haml in Schienen
-
06-07-2019 - |
Frage
Ich habe eine Schiene Aktion erstellen, das einige Jquery in einer Datei zurückzuschicken:
create.js.erb
var appearance = $("<%= escape_javascript(render(:partial => @appearance)) %>").effect("highlight", {color: '#E6ff00'}, 2000);
$("#sortable").append(appearance);
$("#new_appearance")[0].reset();
Ich habe angefangen mit HAML und will wissen, wie ich dies soll zu konvertieren. Kann ich js.haml? Wenn ja, was sollte das Markup aussehen?
Lösung
Eigentlich JS in HAML Rückkehr ziemlich einfach ist, benutzen Sie einfach die:. Einfachen Filter und legt alles, was Sie in # ausgewertet werden sollen {}
:plain
var appearance = $("#{escape_javascript(render(:partial => @appearance)}").effect("highlight", {color: '#E6ff00'}, 2000);
$("#sortable").append(appearance);
$("#new_appearance")[0].reset();
Verwenden Sie nicht die: JavaScript-Filter, wie es alles in einem Tag umschließen wird, die nicht notwendig ist,
.Wenn Sie eine gewisse Logik verwenden müssen, nur gab. Ebene innerhalb der Verschachtelung
- if params[:printing]
:plain
$('#print-view').html("#{escape_javascript(render 'print_preview')}");
Es ERB.
Andere Tipps
Haml ist wirklich gemeint HTML zu erzeugen. Sie könnten in der Theorie, verwenden create.js.haml
, aber ERB macht viel mehr Sinn, wenn Sie Javascript gerade schreiben.
Nun sieht aus wie Sie das nicht brauchen! = Vor jeder Zeile. Die folgenden Werke für mich ganz gut. Im mit Rails 3 und neueste Version von HAML
$('#comments_table_header').after('#{escape_javascript(render :partial => 'row', :locals => { :comment => @comment })}');
In einem js.haml wäre es etwa so aussehen
!= "var appearance = $('<%= escape_javascript(render(:partial => @appearance)) %>').effect('highlight', {color: '#E6ff00'}, 2000);"
!= "$('#sortable').append(appearance);"
!= "$('#new_appearance')[0].reset();"
Beachten Sie die HAML! = Syntax, die den erzeugten Text ist HTML verhindert entkommen. Ich stimme zu, dass ERB ist eine bessere Passform hier, aber für die Konsistenz der Anteile könnte man noch den HAML Weg gehen will.