2012-03-29 81 views
1

我有一個筆記,它有一定數量的屬性。它也有相關的標籤。我一直在使用gon使這個變量可用於頁面的JavaScript文件(使@ note.attributes可用於此頁面)。如何在Rails/jQuery中使用gon包含關聯的對象

我可以輸出的註解屬性輕鬆也就是說,如果我實例:

gon.note = @note.attributes 

我可以輸出它的內容:

alert(gon.note.content) 

但是,這並不通過把筆記標籤..我不能,例如,做:

alert(gon.note.tags) 

如果我想顯示一個音符的標籤,但我想帶他們通過與gon.n而不是製作一個完整的其他變量gon.tags。我該如何做(可能是某種聯合或包含)?我想這樣做,因爲比如說如果你有多個筆記顯示效果更好。

回答

0

如果您的@note.tagshas_many關聯(不是簡單的數組),gon不知道如何序列化Tag實例的數組。

你可以做什麼,但引入另一個變量:

# controller 
gon.note_tags = @note.tags.map &:attributes 

# JS 
var first_tag_name = gon.note_tags[0].name; 

您可能需要使用Rabl如果你需要序列太多的AR對象,因爲坤支持Rabl的。

+0

是的,我認爲你是對的..不幸的是! – jay 2012-03-29 19:32:27

6

Rails有一個有用的as_json方法,可讓您指定關聯,要包含哪些字段,甚至包括哪些方法。它爲單個對象或集合返回一個ruby散列值,當gon調用to_json時,它會很好地序列化。

gon.note = @note.as_json(:include => [:tags])) 
相關問題