2014-07-11 35 views
0

我有這樣的一個some_file.js.erb文件escape_javascript和單引號

console.log("<%= escape_javascript(translate "I can't do that") %>") 

,輸出:I can&#x27;t do that

我想不通爲什麼它不正確地顯示單引號。有任何想法嗎?

回答

1

您可以在字符串上使用html_safe方法。

console.log("<%= escape_javascript "I can't do that".html_safe %>") 
+0

澄清 - 因爲它是一個翻譯字符串,我們不能用'html_safe'這裏。想象一下,它是'escape_javascript'(翻譯「我不能這樣做」),翻譯者可以把他們想要的東西放在那裏。 –

+0

不知道我明白。但我猜你的意思是用戶在表單中輸入一個字符串,點擊「翻譯」,然後服務器進行翻譯,然後將翻譯後的字符串返回給js.erb模板中的瀏覽器?你想確保翻譯字符串中的任何單引號都能正確轉義? –

0

這正是escape_javascript應該做的。從documentation獲取escape_javascript

轉義回車和JavaScript段的單引號和雙引號。

0

相信逃脫JS是不會給你的HTML代碼安全

嘗試console.log("<%= escape_javascript "I can't do that".html_safe %>")