2015-09-14 80 views
1

我是新手,我第一次尝试使用javascript。我有一个调用javascript的div。我有一个时区控制器,一个显示时区的show.html。从div传递信息到javascript

<%= render @user.timezones.paginate(page: params[:page]) %> 

我每个timzone,_timezone.html部分文件,再培训局:

<tr> 
<td><%= timezone.name %></td> 
<td><%= timezone.city %></td> 
<td><%= (timezone.positive ? '+ ' : '- ') + timezone.hours.to_s + ':' + timezone.minutes.to_s %></td> 
<td><div class="time-rect-container" data-positive="<%= timezone.positive %>" data-hours="<%= timezone.hours %>" data-minutes="<%= timezone.minutes%>"></div></td> 
<td><%= link_to "edit", edit_timezone_path(timezone) %> </td> 
<td><%= link_to "delete", timezone, method: :delete, 
            data: { confirm: "You sure?" } %> </td> 

这部分将被调用每一个时区,我有我的数据库为每个用户。

而且我有作为的JavaScript:

$(document).ready(function() { 
setInterval(function() { 
time_div = $('.time-rect-container'); 
var dt = new Date(); 

var x = time_div.data('hours'); 
var y = time_div.data('minutes'); 
z = time_div.data('positive') 
utchours = dt.getUTCHours(); 
utcminutes = dt.getUTCMinutes(); 
utcseconds = dt.getUTCSeconds(); 
if (z == true) 
    var time = parseInt(utchours + x + (utcminutes + y)/60) % 24 + ":" + (utcminutes + y) % 60 + ":" + dt.getUTCSeconds(); 
time_div.html(time) 
}, 1000); 
}); 

我想的JavaScript每次都返回不同的时间,根据不同的时间,时区的分钟。然而,对于每个时区,我在javascript中获得的数据都是相同的,即我检索的数据的小时数和分钟数对于每个时区都保持不变。 有人可以帮助解决这个问题吗?

+1

告诉我们你想聪明的实现需要什么。在你的问题中的描述是在这里,我们可能不会建议你任何东西。问题的第一印象就是你想要达到的目标,而这种方式似乎不是正确的做法。 – Akki619

+0

我有一个不同时区的数据库。我在时区上有一个渲染方法,就是我提到的_timezone.html.erb。对于每个时区,我想计算并显示该时区中的当前时间。因此,对于每个时区,我需要从数据库获取数据并添加/减去时差并打印出来。有什么办法可以将时区差异或每个时区的ID发送给函数? –

回答

3

您可以使用Html Data Attributes发送信息到JavaScript。

您可以生成属性为data-url的div并将其传递给timezone-id url。你的div应该看起来像这样。

<div class="time-rect-container" data-url="/timezones/<%= <timezone id> %>/give_time"></div> 

的Javascript:

$(document).ready(function() { 
    setInterval(function() { 
    time_div = $('.time-rect-container'); 
    time_div.load(time_div.data('url')); 
}, 1000); 
+0

完美,工作的魅力。非常感谢:) –

+0

我遇到了一个新的错误,请查看更新后的问题。 –

+0

更好地创造一个新的问题你混合好事让我看看。它不是一个使用stackoverflow的好方法,你在这里问了一个全新的问题,并删除了前一个问题 –