我正在尝试将一个ruby哈希值呈现给haml中的json字符串。 (!
告诉haml不要逃避输出)
! { :name => "Paul" }.as_json
我期待这个输出
{ "name":"Paul" }
但我得到的是哈希火箭而不是冒号
{ "name"=>"Paul" }
如何为属性/值分隔符使haml或as_json
输出冒号而不是哈希火箭?
答案 0 :(得分:5)
as_json
本质上是一种方法,允许您指定如何在JSON中表示对象。它实际上并没有返回JSON编码的字符串。为此需要to_json
。
这样做的原因是您可能想要确定模型在JSON编码时返回哪些字段(例如,从用户模型中删除密码),但是使用to_json
,您将无法再使用to_json
嵌套在另一个JSON对象中,因为它变成了一个编码和转义字符串。
as_json
会调用{{1}},并会对返回值进行编码。
参考: http://jonathanjulian.com/2010/04/rails-to_json-or-as_json/