2010-07-18 3 views
0

На данный момент у меня есть этот пробег код:Как добавить "" к каждому элементу в этой коллекции в RoR?

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

, который выводит это:

note 1, note 2, note 3 

Как я могу изменить его так, что результат выглядит следующим образом?

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

Спасибо за чтение.

Edit: Вот полный код предложения 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

Хм, странно, что она работает в консоли, но не на мой взгляд. Это мой вывод: " примечание 1 ", " примечание 2 " – ben

+0

Извините, я забыл упомянуть, что я запускаю этот код в javascript, не уверен, что это имеет значение? – ben

+0

Не следует. Используйте 'escape_javascript' и посмотрите, не имеет значения. Обратитесь к моему обновленному ответу. –

Смежные вопросы