Joe*_*joe 5 ruby activerecord sinatra wysihtml5
我正在尝试使用Activerecord在sinatra应用程序中实现wysihml5.
富文本编辑器工作得很好,当我提交表单时,我得到了正确的html帖子到控制器:
pry:> request.params
=> {"title" => "title text",
"content" => "<b>bold text</b><br><i>italic text</i>",
"_wysihtml5_mode" => 1
}
Run Code Online (Sandbox Code Playgroud)
然后,我从request.params中删除哈希条目"_wysihtml5_mode"以创建数据库条目,然后我将内容转换为json:
pry:> request.params.delete("_wysihtml5_mode")
=> 1
pry:> request.params["content"].to_json
=> "\"\\u003Cb\\u003Ebold text\\u003C/b\\u003E...
pry:> class.create(request.params)
Run Code Online (Sandbox Code Playgroud)
问题是我不能把我的价值重新开始:
pry:> class.last.content
=> "\"\\u003Cb\\u003Ebold text\\u003C/b\\u003E...
pry:> JSON.parse(class.last.content)
JSON::ParseError: 743: unexpected token at '"\\u003Cb\\u003Ebold text\\u003C/b\\u003E...
Run Code Online (Sandbox Code Playgroud)
我怎么能回到这个unicode charcters到他们的utf-8风格(我可能错了,我对字符表不熟悉).似乎在转换到json期间,"在开头添加":
"<b>bold => "\"\\u003Cb\\u003Ebold
Run Code Online (Sandbox Code Playgroud)
这可能是问题所在?有任何想法吗?
问题来自于对单个值调用 to_json 。这不会生成完整的 JSON 表示形式。以下是一些示例:
"hello".to_json
=> "\"hello\""
JSON.parse("hello".to_json)
=> JSON::ParseError: 743: unexpected token at...
nil.to_json
=> "null"
JSON.parse(nil.to_json)
=> JSON::ParseError: 743: unexpected token at...
Run Code Online (Sandbox Code Playgroud)
幸运的是,JSON 解析器带有“怪异模式”,允许解析单个值:
"hello".to_json
=> "\"hello\""
JSON.parse("hello".to_json, {:quirks_mode => true})
=> "hello"
nil.to_json
=> "null"
JSON.parse(nil.to_json, {:quirks_mode => true})
=> nil
Run Code Online (Sandbox Code Playgroud)
我不确定 :quirks_mode 到底在做什么,也许有人可以解释一下?
| 归档时间: |
|
| 查看次数: |
471 次 |
| 最近记录: |