格式化Rails和Javascript之间的时间 - 避免跨语言复制代码

时间:2010-07-03 03:58:22

标签: javascript ruby-on-rails

我有一个视图,它采用Ruby Date,对其执行一些格式化,以[5:30 PM]的格式输出时间。然后默认情况下它会增加30分钟,因此结果类似于以下输出:

下午5:30 - 下午6:00

并且haml文件中的代码如下所示:

=format_time( @time ) + " - " + format_time( Time.parse( @time ).advance( :minutes => 30 ) )

其中format_time是我创建的方法。

然后用户可以通过更改组合框选择来更改“持续时间”。假设用户在组合框中选择“60”,我需要在开始时间加60分钟并将输出更新为:

下午5:30 - 下午6:30

问题在于,当页面首次加载时,格式化发生在我的Ruby方法format_time中。但是在组合框选择之后,我认为格式化必须在由组合框中的'onchange'事件触发的Javascript中完成。但这意味着我必须保持两种不同的方法来进行相同的格式化。

有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

一个选项是让javascript向某个rails页面发送一个AJAX请求,其唯一的工作是使用与以前相同的方法格式化日期。

答案 1 :(得分:1)

在javascript中执行所有格式设置。让haml输出未格式化的时间作为javascript变量,然后格式化并使用javascript显示它。这将避免额外的AJAX调用,并让您将格式代码保留在一个地方。