2010-07-18 45 views
0

目前,我有這樣的代碼運行:如何將「」添加到RoR中此集合中的每個項目?

<%=h current_user.notes.collect { |t| t.name }.join(', ') %> 

它輸出這樣的:

note 1, note 2, note 3 

我怎樣才能改變它,以便輸出看起來像這樣?

"note 1", "note 2", "note 3" 

感謝您的閱讀。

編輯:這是KandadaBoggu的建議以下

$(window).ready(function() { 
    $("input#note_name").autocomplete({ 
     source: [<%=h escape_javascript(current_user.notes.collect { |t| '"%s"' % t.name }.join(', ')) %>] 
    }); 
}); 

完整的代碼這裏是輸出HTML:

$(window).ready(function() { 
    $("input#note_name").autocomplete({ 
     source: [\&quot;note 1\&quot;, \&quot;note 2\&quot;] 
    }); 
}); 

回答

2

試試這個:

current_user.notes.collect { |t| '"%s"' % t.name }.join(', ') 

你能逃脫javascript的字符串:

escape_javascript(current_user.notes.collect { |t| '"%s"' % t.name }.join(', ')) 

注意 如果測試代碼在irb控制檯將打印輸出如下:

"\"note 1\", \"note 2\", \"note 3\"" 

這是正確的結果作爲IRB控制檯轉義引號。該字符串將顯示沒有\在視圖

+0

嗯,奇怪的是,它在控制檯中工作,但在我的看法。這是我的輸出:" note 1 "," note 2 " – ben 2010-07-18 06:56:52

+0

對不起,我忘了提及我在javascript中運行此代碼,不知道這是否有所作爲? – ben 2010-07-18 06:59:58

+0

它不應該。使用'escape_javascript',看看它是否有任何區別。參考我更新的答案。 – 2010-07-18 07:08:13

相關問題