以毫秒为单位将Rails datetime转换为Javascript日期

以毫秒为单位将Rails datetime转换为Javascript日期,javascript,ruby-on-rails,datetime,Javascript,Ruby On Rails,Datetime,关于如何将Rails UTC DateTime转换为Javascript日期值,已经进行了一些讨论。然而,当我尝试更进一步并使DateTime动态化时,我看到了错误 最后,我尝试制作一个JS倒计时计时器,它将显示时间之间的剩余秒数。现在(Rails)和一个名为游戏开始的设置UTC时间。我支持将Rails对象(如表中的DateTime)传递到Javascript中 因此,目前,我正在做以下工作: // This is the scrappy way I am storing a temp val

关于如何将Rails UTC DateTime转换为Javascript日期值,已经进行了一些讨论。然而,当我尝试更进一步并使DateTime动态化时,我看到了错误

最后,我尝试制作一个JS倒计时计时器,它将显示
时间之间的剩余秒数。现在
(Rails)和一个名为
游戏开始
的设置UTC时间。我支持将Rails对象(如表中的DateTime)传递到Javascript中

因此,目前,我正在做以下工作:

 // This is the scrappy way I am storing a temp value for DateTime
 <%= content_tag :div, class: "temp_information", data: {temp: @tempquiz} do %>
    <% end %>

 <div id="timer"></div>

 <script>
   $(document).ready(function() {
     var dt = $('.temp_information').data('temp');
     alert(dt);
   }); 
如果我要制作一个倒计时计时器,我需要捕获
游戏开始时间(temp正在这样做)并将其转换为JS毫秒(这是中断的)。但是,当我这样做时(代码为),我会得到以下错误:

   undefined local variable or method `data'

我一点也不明白,因为我在
$(document.ready
的前面一行中定义了
数据作为我们在警报中看到的UTC字符串。如果它知道什么是
数据
,并且可以在第一个实例中返回警报,那么它如何无法在第二个实例中生成警报

您几乎做对了,将数据传递给ruby中的标记,将在html标记上呈现数据属性。在您的案例中,标签是
class='temp\u information'data temp='2016-02-18 09:38:41+0100'

ruby
Time
对象可以像这样转换为javascript
date

红宝石 javascript 所以你的代码是

new Date ($('.temp_information').data('temp'));

可能您必须调用
@tempquick.to_s
,但我认为这是自动发生的。

您正在混合javascript和ruby代码
data
是一个JS变量,但您正试图将其用作
块中的Ruby变量。@MartinSchneider拒绝它。我觉得这很奇怪。我在网上看到了另一个这样做的例子,但这对我来说没有太大意义,为什么它不需要控制器,如果它在标签中。好的,越来越近了。因此,我删除了Ruby变量,并尝试如下操作:
vardt=newdate(data)但它返回“无效日期”。在我可以在JS中使用
Date
之前,还需要进行一些转换吗?很好。我想我们很接近,但这很奇怪。因此,如果我将行转换为:
newdate($('.temp_information').data('temp'),它显示一个关于
无效日期的警报。
如果我删除
新日期
,并使其成为
var temp=$('.temp_information')。数据('temp'),警报将显示UTC字符串,如
2016-02-18T23:07:00.000-08:00
。我是否需要一个中间步骤将UTC字符串转换为毫秒,然后才能将其添加到
新日期
可能?忘记将您标记为@dre hh。如果你对如何处理这个问题有任何反馈,我想这就是我想要的答案。
Time.now.to_s
=> "2016-02-18 09:38:41 +0100"
new Date("2016-02-18 09:38:41 +0100")
=> Thu Feb 18 2016 09:38:41 GMT+0100 (CET)
new Date ($('.temp_information').data('temp'));