Ruby on rails 使用RABL设置日期格式

Ruby on rails 使用RABL设置日期格式,ruby-on-rails,ruby,rabl,Ruby On Rails,Ruby,Rabl,我将一个简单的对象传递到我的RABL视图中,RABL视图基本上是两行: object @invitations attributes :email, :active, :invitation_sent_at, :invitation_accepted_at 如何格式化日期:在发送的邀请?您可以将格式化属性作为节点传递: object @invitations attributes :email, :active node(:formatted_invitation_sent_at){|invi

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

object @invitations
attributes :email, :active, :invitation_sent_at, :invitation_accepted_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\u方法,并传递该helper\u方法而不是属性。

根据您的用例,您可能希望在接收响应的应用程序中格式化日期,而不是在响应本身中格式化日期。这将使您的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

在客户端上设置格式可能更好

如果您使用类似的方法,那么下面的方法应该有效

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

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

</ul>
  • {{邀请函.邀请函{发送日期:'yyyy-MM-dd HH:MM:ss'}

谢谢你的提示。我实际上使用的是angular,不知道这些类型的格式化功能,将来可能会使用。是的,在javascript中这样做比只使用“.strftime()”麻烦多了。不过,保持api“更易使用”的好处是,这可能是我应该保留格式化客户端的最好理由,不管有什么麻烦。