0

我正在编程的 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

Coffeescript AJAX:

systemTick = ->
 $.ajax({
  url: "/"
 });
...
systemTickTimeout = setTimeout (->
 systemTick()), 1000

index.js.erb(我目前在 app/views/pane/ 中有这个地方):

$("#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]%>);

以下是我的路线:

root :to => 'pane#index'
get '/settings' => 'pane#settings'
get '/history' => 'pane#history'
get '/dashboard' => 'pane#dashboard'

当我尝试这个时,我得到一个错误,即 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>

这也是日志中生成的内容:

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)
4

1 回答 1

0

你应该把你的 javascript 模板放在 app/views/panes/

app/views/panes/index.js.erb(注意 html 参数的变化)

$("#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
于 2013-10-23T18:19:50.253 回答