2010-12-21 5 views
1

나는 escape_javascript를 사용하여 ajax를 통해 브라우저에 부분을 반환합니다. 같은레일스 - escape_javascript가 없어도 n n n n n

뭔가 :

$("#inject").html("<%=escape_javascript(render :partial =>"feed/index")%>"); 

문제 escape_javascript보다 효율적으로 escape_javascript하는 레일에 어쨌든 거기

\n\n\n\n\n    \n 

처럼 낭비되는 공간의 모든 종류의 출력 (outputting) 끝인가? \ n 또는 공간의 긴 간격이 필요하지 않습니까?

감사합니다.

+0

escape_javascript 메서드가 낭비되는 공간을 생성하고 있습니까, 아니면 부분적으로 인해 발생합니까? –

+0

그건 내 부분이다 – AnApprentice

답변

3

표준 레일 방법이 없습니다.

$("#inject").html("<%= escape_javascript((render :partial => 'feed/index').squeeze(" ").gsub(/[\n\t]/,'')) %>"); 

내가 더 잘 할 것 달콤한 정규 표현식이있을거야, 그러나 이것은 아주 가까이 얻을 것이다 당신의 HTML 해가되지 않습니다 : 당신은 다음과 같이 escape_javascript에 전달하기 전에 스스로를 제거 할 수 있습니다. gsub은 개행과 탭을 아무 것도 대체하지 않습니다. squeeze 메소드는 공백이 여러 번 나타나는 것을 하나의 공백으로 대체합니다. 모든 공백은 HTML에서 의도적으로 발생하기 때문에 제거하지 않으려합니다.

+0

고마워, 그게 효과가있다. 이것이 전 세계적으로 할 수있는 방법이 있다면 좋겠지 만, 아니면 escape_javascript_squeezed와 같은 도우미를 만들어야할까요? "라고 말했습니다. 생각하면? – AnApprentice

+0

예, 전 세계적으로 그렇게하려면 도우미를 만드는 것이 좋습니다. . – dontangg

0

여기 오해가 있다고 생각하기 때문에이 글을 되 살릴 것입니다. 등 jQuery의 append, prepend, html 또는 기능을 사용할 경우에도 j 단축 할 수

escape_javascript 방법은, (\ n)도 어느 개행 탈출 표시 안된다.

가장 가능성있는 상황은 렌더링 된 부분 "피드/색인"이 이스케이프되고있는 다른 부분을 가지고 있다는 것입니다. 즉, 자바 스크립트가 줄 바꿈을 두 번 이스케이프 처리하여 해당 단어가 부적절하게 해석되도록합니다.

관련 문제