2013-05-20 71 views
0

我生成了一個JS圖表庫使用下面的數組:部隊文字ASCII字符轉換爲字符串

['DE', 50], ['GB', 9], ['IE', 2] 

不過,我需要在文字撇號,以力,使得JS庫正確呈現圖表。即[' DE ',50],[' GB ',9],[' IE ',2]

我敢肯定,這是簡單的,但我只是不停地用ASCII碼結束了。

我的Ruby代碼是

@product.sales_data.map { |territory,sales| "['" << territory << "', " << sales.to_s << "]" }.join(", ") 
+0

抱歉它是一個數組,我的錯誤 – Raoot

+0

呀,它工作正常,如果它只是呈現爲HTML,但它傳遞給一些Javascript,撇號被視爲ascii c而不是它需要的文字字符。 – Raoot

+0

所以在你的代碼中,我的理解是,你需要在發送這個在Ruby中創建的JavaScript數組來創建腳本之前,將代碼放在代碼中,並且它在源代碼中顯示'&#x27'而不是'''?我說得對嗎? –

回答

0

這工作正常紅寶石2.0.0至少

sales_data = [['DE', 50], ['GB', 9], ['IE', 2]] 
sales_data.map { |territory, sales| "['" << territory << "', " << sales.to_s << "]"}.join(", ") 

或可替代

sales_data.map { |territory, sales| "['#{territory}', #{sales}]" }.join(", ") 
+0

我喜歡你在替代方案上的建議,但是當傳遞給javascript時,這仍然會將撇號顯示爲ascii代碼。我不確定答案在於Ruby,但是在JS中呈現的內容中逃避了這些。 – Raoot

+0

你到底怎麼把這個字符串發送給js?你能寫一個js函數接受一個參數並將其打印出來,然後將ruby字符串發送給該函數以測試它是否正確傳遞?你也想發送一個字符串或數組到該js函數? – SpiderPig

+0

在sales_date上調用.html_safe似乎取得了成效。 – Raoot