在javascript数组中使用换行符存储文本

时间:2012-03-15 17:55:17

标签: ruby-on-rails

我有一个表单,用户可以通过文本字段输入注释。

输入注释时,用户可以按“输入”添加换行符,输入的注释也可以包含多行,并存储在varchar(2000) latin1_swedish_ci

类型的表列中

在其他一些页面上,我正在从数据库中检索笔记并将它们存储在一个数组中。我正在提醒数组内容以测试一切是否正常

我的问题是,如果音符跨越多行或包含换行符,它似乎不会存储在该数组中,并且警报功能不会针对该特定音符发出任何警报。

但是,如果我使用纯红宝石代码显示它,它会正确显示。

以下是我的代码示例:

/********** loop through the resultset and store the values in the test_array **********/
<% @saved_note.each do |note| %>
    <script type="text/javascript">
        testarray[note_counter] = '<%= note.value %>';
        alert(testarray[note_counter]);
        note_counter++;
    </script>
    <%= note.value %> 
<% end %> 

任何建议都表示赞赏。

非常感谢

3 个答案:

答案 0 :(得分:2)

如果note.value跨越多行,您将得到以下结果:

testarray[note_counter] = 'Dear tanya,
how are you doing today?
sincerely, 
user';

这里的问题是javascript不支持没有some massaging的多行字符串。如果您在note.value中挂出任何类型的换行符,则在打印之前,您需要将它们转义(请参阅this example)。

答案 1 :(得分:1)

你可以尝试

testarray[note_counter] = <%= raw note.value.to_json %>;

我个人将其存储在AplicationHelper

def json value
  raw value.to_json
end

然后在你的视图中

testarray[note_counter] = <%= json note.value %>;

答案 2 :(得分:0)

我无法找到我在php中如何处理它的确切示例,但想法是尝试将所有符号解析为其ansi代码并检查所需的符号。只是一个想法。