2014-02-12 60 views
1

我傳遞一個簡單的對象到我Rabl的視圖格式化的Rabl的看法基本上是兩條線:日期與Rabl的

object @invitations 
attributes :email, :active, :invitation_sent_at, :invitation_accepted_at 

我如何格式化日期:invitation_sent_at?另外

object @invitations 
attributes :email, :active 
node(:formatted_invitation_sent_at){|invite| invite.invitation_sent_at.strftime(some_format)} 
node(:formatted_invitation_accepted_at){|invite| invite.invitation_accepted_at.strftime(some_format)} 

,使這個是helper_method在模型中,並傳遞是helper_method代替屬性:

回答

1

您可以通過格式化的屬性作爲節點。

0

根據您的使用情況,您可能想要在接收響應的應用程序中格式化日期,而不是響應本身。這將使您的RABL模板與日期的最終呈現分離,從而更容易消耗。

然後假設你消費使用JavaScript響應:

// parse manually 
var invitedAt = new Date(response.invitation_sent_at); // assumes Rails default UTC formatting 
invitedAt.getFullYear(); // 2014 
invitedAt.getMonth(); // 1 
// etc. 

// parse with a library like moment.js (http://momentjs.com/) 
moment(response.invitation_sent_at).format('MMMM Do YYYY, h:mm:ss a'); // February 12th 2014, 1:01:59 pm 
+0

是的,它只是在JavaScript中執行此操作而已,而不僅僅是'.strftime()'。儘管保持api'更易消耗'的好處在於,這可能是我應該保持格式化客戶端的最佳理由,不管麻煩如何。 –

2

格式在客戶端上可能會更好。

如果您使用類似AngularJS的東西,以下應該可以工作。

<ul ng-repeat="invitation in invitations"> 

    <li>{{ invitation.invitation_sent_at | date: 'yyyy-MM-dd HH:mm:ss' }}</li> 

</ul> 
+0

感謝您的提示。我實際上正在使用angular,並且不知道這些格式化功能,未來可能會使用它。 –