2014-12-01 56 views
0

我使用Mongoid Gem的Rails 4和MongoDB。 我有角模板是這樣的:如何從Angoid獲得Mongoid的id?

<ul><li><a href="" ng-click="navNewEmail()">Add a new post</a></li></ul> 

<section> 
    <h1>Availabe templates: (click to load content)</h1> 
    <div ng-repeat="email in data.emails"> 
     <h3><a href="" ng-click="viewEmail(email._id)">{{ email.subject }}</a> - author: {{ email.user_name }}</h3> 
{{ email._id }} 
    </div> 
</section> 

我怎樣才能得到一個idEmail對象? 我在MongoDB中有簡單的Email對象。 我試過email._id但角顯示沒有。

{{ email._id }}部分之外的一切工作。從JavaScript控制檯

登錄:

$$hashKey 
    "005" 

_id  
    Object { $oid="5478774a6a61734d8a000000"} 

body   
    "Here is the sample conte...le ble ble. Nice email." 

subject  
    "This is first template" 

user_name  
    null 

所以_id是對象。我如何將它轉換爲字符串並在角模板中顯示?

我做這樣的事情:

{{ email._id.$oid }} 

我不知道是不是正確的,但工作。

+0

email.subject有效嗎? – rjackson 2014-12-01 17:37:43

+0

是的,除了'email._id',一切都可以工作。 – Jensky 2014-12-01 17:40:01

+0

請嘗試使用javascript檢查data.emails。 console.log(data.emails)在angularjs控制器中。並在這裏發佈javascript日誌消息。 – rjackson 2014-12-01 17:44:40

回答

3

我認爲你可以在rails側使用'active_model_serializers'gem序列化json對象。

gem "active_model_serializers", github: "rails-api/active_model_serializers" 

,並創建序列化的目錄你自己的序列

class EmailSerializer < ActiveModel::Serializer 
    attributes :_id, :body, :subject, :user_name 
end 

然後,嘗試使用{{email._id}}

所以,我認爲active_model_serializers調用object._id.to_s方法在執行序列化時自動執行。