2012-06-30 45 views
1

我想呈現紅寶石哈希到haml中的json字符串。 (該!告訴HAML不要逃避輸出)HAML渲染as_json與散列火箭而不是冒號

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

我希望這個輸出

{ "name":"Paul" } 

但我得到一個哈希火箭,而不是一個冒號

{ "name"=>"Paul" } 

如何使哈姆或as_json輸出一個冒號而不是散列火箭的屬性/值分隔符?

+0

你爲什麼不只是使用來自紅寶石''to_json'寶石json'? – Linuxios

+0

@Linuxios因爲to_json轉義了我不想要的引號({\「name \」:\「Paul \」} – Paul

+0

喲意味着什麼「逃避引號」? – Linuxios

回答

4

as_json本質上是一種方法,允許您指定對象在JSON中的表示方式。它實際上並沒有返回一個JSON編碼的字符串。那需要to_json

原因是您可能想要決定在JSON編碼(例如,從用戶模型中刪除密碼)時模型返回哪些字段,但通過使用to_json,您不再有能力將其嵌套另一個JSON對象,因爲它變成了一個編碼和轉義的字符串。

to_json將調用as_json,並將編碼返回值。

從引用: http://jonathanjulian.com/2010/04/rails-to_json-or-as_json/

+1

to_json解決了我的問題 – Paul