如何使用rails和javascript定时器让AJAX工作?

如何使用rails和javascript定时器让AJAX工作?,javascript,jquery,ruby-on-rails,ajax,ruby-ffi,Javascript,Jquery,Ruby On Rails,Ajax,Ruby Ffi,我正在编程的rails应用程序通过ruby的ffi gem从共享对象接收来自外部源的数据。我已经得到了数据,并在屏幕上显示了一次,但当我试图用AJAX更新时,我似乎无法正确地操作数据。我只需要几个div,其中包含要用新数据更新的数据值 窗格控制器: def getAllData init a = getCurrent #a << getRIM a << getWaterTemp a << getCharge return a end def in

我正在编程的rails应用程序通过ruby的ffi gem从共享对象接收来自外部源的数据。我已经得到了数据,并在屏幕上显示了一次,但当我试图用AJAX更新时,我似乎无法正确地操作数据。我只需要几个div,其中包含要用新数据更新的数据值

窗格控制器:

def getAllData
 init
 a = getCurrent
 #a << getRIM
 a << getWaterTemp
 a << getCharge
 return a
end

def index
 @data = getAllData
 respond_to do |format|
  format.html
  format.js
 end
end
index.js.erb(我目前在app/views/pane/中有这个位置):

当我尝试这一点时,我得到一个错误,即没有方法[]表示Nil,我知道这意味着数据没有被发送,但我不明白为什么

编辑* nil no方法[]不再存在,但我仍然无法通过AJAX显示新数据。我的js.erb文件中的值没有正确填充

index.html.erb:

<tr>
  <td id="amps"><%= "%.1f" % @data[0]%></td>
</tr>
<tr>
  <td id="volts"><%= "%.2f" % @data[1]%></td>
</tr>
<tr>
  <td id="watts"><%= "%.1f" % @data[2]%></td>
</tr>
<span class="value" id="battery-charge"><%=@data[5].to_i%></span>
<span class="value" id="temperature-reading"><%=@data[4].to_i%></span>
<span id="current-fuel-cell-state" style="display:none"><%=@data[3].to_i%></span>

您应该将javascript模板放在app/views/panes中/

app/views/panes/index.js.erb(注意将参数更改为html)

$(“#amps”).html(“”);
$(“#伏特”).html(“”);
$(“#瓦茨”).html(“”);
$(“#当前燃料电池状态”).html(“”);
$(“#温度读数”).html(“”);
$(“#电池电量”).html(“”);
窗格控制器

def getAllData
 init
 a = getCurrent
 #b = getRIM
 a << getWaterTemp
 a << getCharge
 return a
end

def index
 @data = getAllData
 respond_to do |format|
  format.html
  format.js
 end
end
def getAllData
初始化
a=getCurrent
#b=getRIM

已修复no method[]nil错误但数据仍未更新的。我甚至将@data[x]替换为一个简单的字符串,如“test”,并且值没有更新。所以我的ajax肯定有问题,对吗?给我们看看你的视图代码。对我的回答做了一个改变。忘记在html参数中添加双引号了。实际上,我刚刚修复了一些问题,在ajax函数中添加了数据类型:“script”
root :to => 'pane#index'
get '/settings' => 'pane#settings'
get '/history' => 'pane#history'
get '/dashboard' => 'pane#dashboard'
<tr>
  <td id="amps"><%= "%.1f" % @data[0]%></td>
</tr>
<tr>
  <td id="volts"><%= "%.2f" % @data[1]%></td>
</tr>
<tr>
  <td id="watts"><%= "%.1f" % @data[2]%></td>
</tr>
<span class="value" id="battery-charge"><%=@data[5].to_i%></span>
<span class="value" id="temperature-reading"><%=@data[4].to_i%></span>
<span id="current-fuel-cell-state" style="display:none"><%=@data[3].to_i%></span>
Started GET "/" for 127.0.0.1 at 2013-10-23 15:30:00 -0400
Processing by PaneController#index as */*
Rendered pane/index.html.erb within layouts/application (0.5ms)
Completed 200 OK in 294ms (Views: 9.9ms | ActiveRecord: 0.0ms)
$("#amps").html("<%= @data[0]%>");
$("#volts").html("<%= @data[1]%>");
$("#watts").html("<%= @data[2]%>");
$("#current-fuel-cell-state").html("<%= @data[3]%>");
$("#temperature-reading").html("<%= @data[4]%>");
$("#battery-charge").html("<%= @data[5]%>");
def getAllData
 init
 a = getCurrent
 #b = getRIM
 a << getWaterTemp
 a << getCharge
 return a
end

def index
 @data = getAllData
 respond_to do |format|
  format.html
  format.js
 end
end