39

ファイル内のjqueryを送り返すrailscreateアクションがあります。

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

4 に答える 4

76

実際、HAMLでJSを返すのは非常に簡単です。: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。

于 2011-02-17T17:56:02.630 に答える
4

Hamlは本当にHTMLを生成することを目的としています。理論的にはを使用できますが、create.js.hamlJavascriptを作成する場合はERBの方がはるかに理にかなっています。

于 2009-10-25T23:48:21.860 に答える
2

各行の前に!=は必要ないようです。以下は私にとってはうまくいきます。Rails3と最新バージョンのHAMLを使用しています

$('#comments_table_header').after('#{escape_javascript(render :partial => 'row', :locals => { :comment => @comment })}');
于 2011-02-18T15:54:27.033 に答える
0

js.hamlでは次のようになります

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

生成されたテキストがHTMLエスケープされるのを防ぐHAML!=構文に注意してください。ここではERBの方が適していることに同意しますが、一貫性を保つために、HAMLを使用することをお勧めします。

于 2010-10-03T06:48:21.727 に答える