下午好,
我正在尝试使用基于javascript的编辑器(EpicEditor)来允许我网站上的管理员输入博客帖子的降价。单击提交按钮时,编辑器生成的字符串将被发送到Ruby / Rails服务器,以便通过RDiscount处理为HTML。
除了与
,空格等有关的事情之外,它似乎主要起作用。单击EpicEditor中的“预览”按钮可以提供我期望的确切输出,因此我知道这与字符串发送到服务器的方式有关。我对红宝石仍然相当新,而且对于字符串编码也不是很好。我相信对于合适的人来说这是一个相当简单的问题。
为了说明问题 - 只显示代码可能是最好的。我正在尝试在有序列表下输入项目符号列表。因此,降价将类似于:
1. Hello
2. Goodbye
- a list
- entry
3. For something
我的问题似乎是在有序列表条目之后的换行符内和周围。保存到数据库的字符串以及javascript编辑器中的内容显示完全相同:
"\n - had\n"
然而,在进一步检查时,“工作字符串”(EpicEditor中预览视图中使用的字符串)与“失败字符串”(存储在我的数据库中的确切字符串)之间存在细微差别。形式):
working_string.each_byte {|c| puts c}
--> 10, 32, 32, 45, 32, 104, 97, 100, 10
failing_string.each_byte {|c| puts c}
--> 10, 194, 160, 32, 45, 32, 104, 97, 100, 10
不知何故/某种程度上,32
正在更改194 160
个字节。在进一步的研究中,对于\xC2
或\xA0
而言,这似乎与字符串中的常规空间存在一些问题,并且与
的某些事情有关(我认为)
是否有一种简单的方法可以确保字符串从EpicEditor正确传递到rails服务器并进入数据库?如果有帮助的话,我也可以在服务器端使用字符串替换....
谢谢!
更新1
我经历过并试图找到确切的问题。我抓住了Epiceditor的文本,从我从Epiceditor镜像的textarea(提交表单),通过电线的参数和数据库中的字符串。降价如下(直接从epiceditor文本区域复制:
## Testing this yet again
Because I want more!! More things to have a good time....
1. Everywhere!
2. Anywhere!
- happy place
- sad place
3. Goodbye
如果我将其直接粘贴到此输入中,您可以看到它正确呈现:
因为我想要更多!!更多的事情要玩得开心....
此字符串的ASCII字符如下:
[35, 35, 32, 84, 101, 115, 116, 105, 110, 103, 32, 116, 104, 105, 115, 32, 121, 101, 116, 32, 97, 103, 97, 105, 110, 10, 10, 66, 101, 99, 97, 117, 115, 101, 32, 73, 32, 119, 97, 110, 116, 32, 109, 111, 114, 101, 33, 33, 32, 77, 111, 114, 101, 32, 116, 104, 105, 110, 103, 115, 32, 116, 111, 32, 104, 97, 118, 101, 32, 97, 32, 103, 111, 111, 100, 32, 116, 105, 109, 101, 46, 46, 46, 46, 10, 10, 49, 46, 32, 32, 69, 118, 101, 114, 121, 119, 104, 101, 114, 101, 33, 10, 50, 46, 32, 32, 65, 110, 121, 119, 104, 101, 114, 101, 33, 10, 32, 32, 45, 32, 104, 97, 112, 112, 121, 32, 112, 108, 97, 99, 101, 10, 32, 32, 45, 32, 115, 97, 100, 32, 112, 108, 97, 99, 101, 10, 51, 46, 32, 32, 71, 111, 111, 100, 98, 121, 101]
我通过exportFile()将编辑器内容复制到textarea。 textarea中的ASCII字符如下:
[35,35,32,84,101,115,116,105,110,103,32,116,104,105,115,32,121,101,116,32,97,103,97,105,110,10,10,66,101,99,97,117,115,101,32,73,32,119,97,110,116,32,109,111,114,101,33,33,32,77,111,114,101,32,116,104,105,110,103,115,32,116,111,32,104,97,118,101,32,97,32,103,111,111,100,32,116,105,109,101,46,46,46,46,10,10,49,46,32,160,69,118,101,114,121,119,104,101,114,101,33,10,50,46,32,160,65,110,121,119,104,101,114,101,33,10,160,32,45,32,104,97,112,112,121,32,112,108,97,99,101,10,160,32,45,32,115,97,100,32,112,108,97,99,101,10,51,46,32,160,71,111,111,100,98,121,101]
如果您对这些数组进行区分,我会得到以下结果:
textarea - epiceditor
=> [160, 160, 160, 160, 160]
换句话说,在exportFile()中EpicEditor似乎还有额外的
输出。有关这可能来自哪里的任何想法?我完成镜像如下:
var post_body = $("#post_body");
var content = post_body.val();
var editor = new EpicEditor(opts);
editor.on('load', function () {
editor.importFile(window.location.href, content); //Imports a file when the user clicks this button
});
editor.on('save', function () {
post_body.val(editor.exportFile());
});
更新2
P.S。以下修复了exportFile()输出。我很高兴至少我已经弄明白了,但我希望得到一些与EpicEditor本身有效的东西!
bad = "#{194.chr}#{160.chr}".force_encoding('utf-8')
good = 32.chr
self.body = body.gsub(bad, good)