문제

파일에서 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을 사용할 수 있습니까? 그렇다면 마크 업은 어떻게 생겼습니까?

도움이 되었습니까?

해결책

실제로 Haml에서 JS를 반환하는 것은 매우 쉽습니다. 일반 필터를 사용하고 #{}에서 평가하려는 모든 것을 동봉하십시오.

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

JavaScript 필터를 사용하지 마십시오. 불필요한 태그에 모든 것을 둘러싸게합니다.

논리를 사용해야하는 경우 : 평원을 중첩 안에 넣으십시오.

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

죄송합니다.

다른 팁

Haml은 실제로 HTML을 생성하기위한 것입니다. 이론적으로 사용할 수 있습니다 create.js.haml, 그러나 ERB는 JavaScript를 작성할 때 훨씬 더 의미가 있습니다.

각 줄 앞에! =가 필요하지 않은 것 같습니다. 다음은 저를 위해 잘 작동합니다. Im Rails 3과 Haml의 최신 버전을 사용하고 있습니다

$('#comments_table_header').after('#{escape_javascript(render :partial => 'row', :locals => { :comment => @comment })}');

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 Way를 원할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top