2013-01-20 92 views
2

我有希望在這樣的超鏈接中嵌入一個Javascript:在Rails中生成小書籤的最佳方式是什麼?

<a href="javascript:function() {...}();"> 

我創建部分稱爲_bookmarklet.html.erb產生的JavaScript,包括動態生成的指向資產鏈接應用程序/資產。它不能是靜態的,因爲它創建的URL指向當前服務器上的資源,它必須是絕對的,因爲安裝後,可以在不同的Web主機上執行書籤。

我的模板看起來是這樣的:

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

我遇到的問題是在JavaScript中的「(雙引號」)。有逃避報價的機制嗎?我如何正確嵌入它?在Rails中公開小書籤的正確方法是什麼?

+0

我已經嘗試了以下建議的選項以及escape_javascript。 escape_javascript轉義像\「,而不是"。我想我真正需要的是某種方式轉義html字符(<, ", >)。肯定有一個Rails幫手嗎? –

+0

h不會做任何事情。因爲我的javascript不是實際上HTML(沒有標籤)沒有任何東西可以逃脫 –

+0

我試圖創建一個幫助器,它使用CGI.escape將javascript編碼爲url,但瀏覽器無法識別「javascript%3A%28function%28% 29%7Bfunction + src_script ....「,即使我試圖用"代替」',也會拋出解析器(「非法令牌」)。 –

回答

1

你有幾個選項。您可以使用link_to助手進行轉義爲您提供:

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

或者manually escaping節點的屬性通過:

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

這些都沒有引號。 –

0

severalgems,允許你創建一個書籤。總之逃跑和渲染JavaScript的一個HREF你應該把部分作爲一個字符串:

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

Here也是一步一步的指導,建立在鐵軌一個書籤,沒有任何寶石。

相關問題