На самом деле, вернуть JS в HAML довольно просто, просто используйте фильтр: plain и заключите все, что вы хотите оценить в # {}.
:plain
var appearance = $("#{escape_javascript(render(:partial => @appearance)}").effect("highlight", {color: '#E6ff00'}, 2000);
$("#sortable").append(appearance);
$("#new_appearance")[0].reset();
Не используйте фильтр: javascript, поскольку он будет заключать в тег все ненужное.
Если вам нужно использовать логику, просто поместите: plain внутри вложенности.
- if params[:printing]
:plain
$('#print-view').html("#{escape_javascript(render 'print_preview')}");
Извините, ERB.