如何在rails中发回js.haml

Cam*_*ron 37 jquery haml ruby-on-rails

我有一个rails create action,它会在文件中发回一些jquery:

create.js.erb

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

我已经开始使用HAML了,想知道我应该如何转换它.我可以使用js.haml吗?如果是这样,标记应该是什么样的?

Kar*_*arl 74

实际上,在HAML中返回JS非常简单,只需使用:plain过滤器并在#{}中包含您想要评估的任何内容.

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

不要使用:javascript过滤器,因为它会将所有内容都包含在标签中,这是不必要的.

如果你需要使用一些逻辑,只需将:plain放在嵌套中.

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

对不起ERB.

  • 请注意,最新版本的haml中不需要`:plain`. (12认同)