使用RABL格式化日期

时间:2014-02-12 16:03:45

标签: ruby-on-rails ruby rabl

我将一个简单的对象传递到我的RABL视图中,rabl视图基本上是两行:

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

如何格式化日期:invitation_sent_at

3 个答案:

答案 0 :(得分:2)

在客户端上格式化可能会更好。

如果您使用AngularJS之类的内容,则以下内容应有效。

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

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

</ul>

答案 1 :(得分:1)

您可以将格式化的属性作为节点传递:

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而不是属性。

答案 2 :(得分: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