ruby-on-rails - Rails Controller 丢失 JSON 字符串中的换行符

标签 ruby-on-rails ruby json passenger line-breaks

这里有点碰壁。我正在尝试将包含换行符的字符串(\n,由 JSON.stringify 转换为\u000a)作为 JSON 对象的一部分发送到 Rails 应用程序:

{"bob":{"id":46,"notes":"foo\u000abar\u000abaz"}}

这是通过网络传输的,\u000a 转义为 %5Cu000a:

http://localhost/bobs/46?draft=true&%7B%22bob%22%3A%7B%22id%22%3A46%2C%22notes%22%3A%22foo%5Cu000abar%5Cu000abaz%22%7D%7D=

但是当请求到达 Rubyland 时,换行符消失在一股以太中,变成空格:

Processing Api::BobsController#update (for 127.0.0.1 at 2011-05-19 11:01:43) [PUT]
  Parameters: {"draft"=>"true", "action"=>"update", "id"=>"46", "controller"=>"api/bobs", "bob"=>{"notes"=>"foo bar baz", "id"=>46}

这不仅仅是一些日志记录工件,而且它们也以这种方式进入数据库:

ree-1.8.7-2010.02 > Bob.find_by_id(46)
 => #<Bob id: 46, notes: "foo bar baz"...>

如果我发送例如。 “\\n”而不是“\n”,它们通过得很好:

Processing Api::BobsController#update (for 127.0.0.1 at 2011-05-19 11:01:43) [PUT]
  Parameters: {"draft"=>"true", "action"=>"update", "id"=>"46", "controller"=>"api/bobs", "bob"=>{"notes"=>"foo\\nbar\\nbaz", "id"=>46}

发生了什么,为什么?

更新:一位同事依稀记得听说 Passenger 被怀疑丢弃了一些特殊字符,但他找不到支持这一点的引用,我也不能...?

最佳答案

这可能没什么,但是 PUT 方法不是要在 RESTful Rails 中被 POST 处理吗? GET - 任何 URL 都应该是可重复的,无需对数据库进行任何更改。

如果您将 AJAX 调用更改为 post,您还可以指示 application/json 的正确内容类型,以便 Rails 知道如何处理它。

关于ruby-on-rails - Rails Controller 丢失 JSON 字符串中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052828/

相关文章:

ruby-on-rails - rails : Make this rake task aware that it is in the test environment

ruby - 在 mac (libxml2) 上安装 nokogiri 1.6.0 时出错

ruby-on-rails - 如何格式化此 PostgreSQL 查询以便能够与 db :migrate 一起运行

javascript - 如何在 extjs 中为 json 数组创建模型?

javascript - 在 Angular 中解析 n 级深度 JSON

ruby-on-rails - 创建一个始终运行的后台任务

javascript - #88 动态选择菜单(修订版)在 rails 上不起作用

sql - 通过关联查询arel

ruby - 在 Sinatra 之上构建 MVC 结构

JSON Schema 多重从属关系