Как отправить обратно js.haml в рельсы - PullRequest
36 голосов
/ 26 октября 2009

У меня есть действие создания рельсов, которое отправляет обратно некоторые jquery в файле:

create.js.erb

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

Я начал использовать HAML и хочу знать, как мне это преобразовать. Могу ли я использовать js.haml? Если так, то как должна выглядеть разметка?

Ответы [ 4 ]

72 голосов
/ 17 февраля 2011

На самом деле, вернуть 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.

4 голосов
/ 26 октября 2009

Haml действительно предназначен для генерации HTML. Теоретически, вы можете использовать create.js.haml, но ERB имеет гораздо больше смысла, когда вы пишете Javascript.

2 голосов
/ 18 февраля 2011

Похоже, вам не нужно! = Перед каждой строкой. Следующее работает для меня просто отлично. Я использую Rails 3 и последнюю версию HAML

$('#comments_table_header').after('#{escape_javascript(render :partial => 'row', :locals => { :comment => @comment })}');
0 голосов
/ 03 октября 2010

В js.haml это выглядело бы как

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

Обратите внимание на синтаксис HAML! =, Который предотвращает экранирование сгенерированного текста HTML. Я согласен с тем, что ERB лучше подходит для этой цели, но для обеспечения согласованности вы все равно можете пойти по пути HAML.

...