Rails에서 js.haml을 다시 보내는 방법
-
06-07-2019 - |
문제
파일에서 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를 원할 수도 있습니다.
제휴하지 않습니다 StackOverflow