我有一个表单,用户可以通过文本字段输入注释。
输入注释时,用户可以按“输入”添加换行符,输入的注释也可以包含多行,并存储在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 %>
任何建议都表示赞赏。
非常感谢
答案 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代码并检查所需的符号。只是一个想法。