2013-01-20 2 views
2

나는이 같은 하이퍼 링크에 포함 할 자바 스크립트를 app/assets. 현재 서버에있는 자산에 대한 URL의 지점을 생성하기 때문에 정적이어서는 안됩니다. 설치가 완료된 후 북마크릿이 다른 웹 호스트에서 실행될 수 있기 때문에 절대적이어야합니다.Rails에서 북마크릿을 생성하는 가장 좋은 방법은 무엇입니까? <pre><code><a href="javascript:function() {...}();"> </code></pre> <p></p> 내가 동적 자산을 가리 키도록 생성 된 링크를 포함하여, 자바 스크립트를 생성하는 부분이라고 _bookmarklet.html.erb을 만들어 :

내 템플릿은 다음과 같습니다

<a href="<%= render :partial => 'pages/bookmarklet' %>" 

난 데 문제는 자바 스크립트에서 "(큰 따옴표")입니다. 따옴표를 이스케이프 처리하는 메커니즘이 있습니까? 어떻게 이것을 제대로 삽입 할 수 있습니까? Rails에서 북마크릿을 노출하는 올바른 방법은 무엇입니까?

+0

아래 제안 된 옵션과 escape_javascript를 사용해 보았습니다. escape_javascript는 " 대신 \ "와 같은 따옴표를 이스케이프 처리합니다. 내가 정말로 필요로하는 것은 html 문자 (<, ", >)를 이스케이프 처리하는 방법입니다. –

+0

h는 아무 것도하지 않습니다. 실제로는 HTML (태그가 없음) 도망 갈 수있는 것이 아무것도 없다. –

+0

CGI.escape를 사용하여 URL로 자바 스크립트를 인코딩하는 도우미를 만들려고했지만 브라우저가 "javascript % 3A % 28function % 28 % 29 % 7Bfunction + src_script .... "자바 스크립트로. 단지" '를 "으로 대체하려고해도 파서 ("잘못된 토큰")가 표시됩니다. –

답변

1

몇 가지 옵션이 있습니다. 당신은 당신을 위해 탈출 수행 할 link_to 도우미를 사용할 수 있습니다

link_to "Bookmarklet!", render(:partial => 'pages/bookmarklet') 

또는 manually escaping 노드의 속성을 통해 :

당신이 북마크를 만들 수 several gems을있다
<a href="<%=h render :partial => 'pages/bookmarklet' %>" 
+0

둘 다 따옴표를 이스케이프하지 마십시오. –

0

. 어쨌든 당신은 문자열로 부분을 처리해야 탈출 및 A HREF에서 자바 스크립트를 렌더링 :

<%= link_to "Bookmarklet", "#{render 'bookmarklet'}" %>

Here는 어떤 보석없이 레일에 북마크를 만들 수있는 단계별 가이드입니다.