2011-11-11 2 views
2

내가 뭐하는 거지는이 insertBefore jQuery를이 코드가 출력 될 때까지 잘 작동 create.erb.jsjQuery를에 insertbefore와 작은 따옴표 문제

'<div style="background-color:yellow;"><%= show_content %></div>' 

레일 측면에서

$.post('/blah', { blah : "some data" }, function(response) { 
    $(response).insertBefore($this); $this.val(''); }, "script"); } 

에 HTML을 나누기 '을 포함 표현. 기본적으로 반환 문자열 내가 레일 3.0.x의 오전과 자바 스크립트와 아무것도 작동 모두 레일과에 이스케이프 취소를 탈출의 다양한 조합을 시도이

'<div ...>It's a beautiful day</div>' 

, 어떤 제안 같은 것을 포함? '"으로 변경할 수 있지만 문제가 해결되지 않는 다른 문자로 변경됩니다.

편집 좋아,이, jQuery를

create.erb.js

'<div style="background-color:yellow;"><%= raw(show_content.gsub(/'/, "%27")) %></div>' 

생각하지만 난 많은 시행 착오

레일 측면에서

후 해결책을 발견 한 방법이 더 복잡하다

$.post('/blah', { blah : "some data" }, function(response) { 
    $(unescape(response)).insertBefore($this); $this.val(''); }, "script"); } 
+0

당신은 하나의 기호를 탈출하지만, 거기에 다른 기호이고 여기에 당신이 그들을 발생하지 않는다고 보장 할 수 없습니다 – megas

+0

그래 나는 그것을 테스트하지만 다른 특수 문자 중 어느 것도 문제가 단지 하나의 인용문이 것 같다. – Bob

답변

0

많은 시행 착오 끝에 해결책을 찾았지만 희망만큼 간단하지는 않지만 작동하는 한 대답은 편집 된 질문을 참조하십시오.

1

요소 앞에 HTML을 넣으 려하므로.

$(element).before(YOUR HTML); 

또는

어쩌면 더 나은 솔루션은 다음과 같아야합니다 :

$(element).html(YOUR HTML) 

을 그리고 당신의 HTML을 유지하기 위해 ID로 스팬을 넣어 그것은 사용하기 명백한 이동합니다.

+0

'before '를 텍스트 상자에 사용하는 것과 관련된 몇 가지 문제를 생각해 낸다. – Bob

1

'<div ...>It\'s a beautiful day</div>' 

편집처럼 탈출 백 슬래시를 사용

어쩌면 당신은이 링크를 체크 아웃해야합니다 : Let unescape_js handle escaped single quotes 또는 escape_javascript

+0

제안 해 주셔서 감사하지만 작동하지 않았다. – Bob

+0

@Bob 나는 주위를 둘러 보았고 이것이 모두에게주는 제안이기 때문에 잘못된 것이 없다고 확신 하는가? –

+0

@Bob이 링크를 체크 아웃 할 수도 있습니다. http://www.w3schools.com/js/js_special_characters.asp –

1

사용 html_escape 방법 또는 그것에서 h() 동의어이다 ERB :: Util.

+0

제안 주셔서 감사하지만 작동하지 않았습니다. – Bob