HAML使用哈希火箭而不是冒号渲染as_json

时间:2012-06-30 16:27:11

标签: ruby-on-rails ruby json haml

我正在尝试将一个ruby哈希值呈现给haml中的json字符串。 (!告诉haml不要逃避输出)

! { :name => "Paul" }.as_json 

我期待这个输出

{ "name":"Paul" }

但我得到的是哈希火箭而不是冒号

{ "name"=>"Paul" }

如何为属性/值分隔符使haml或as_json输出冒号而不是哈希火箭?

1 个答案:

答案 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/