如何让 AJAX 使用 rails 和 JavaScript 计时器工作
How do I get AJAX working using rails and a javascript timer?
我正在编程的rails应用程序通过ruby的ffi gem从共享对象中获取来自外部源的数据。我已经让数据进入并在屏幕上显示一次,但是当我尝试使用 AJAX 更新时,我似乎无法正确操作数据。我只想要一些包含数据值的div 用新数据更新。
Pane_controller:
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)
你应该把你的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
相关文章:
- 在 Node.Js 脚本中使用 Javascript 计时器在特定时间触发事件
- Javascript 计时器只调用一次 Code 隐藏方法
- 重置图像滑块的Javascript计时器
- 正在停止Javascript计时器
- I'我试图让这个javascript计时器启动onclick,但它不会启动
- javascript计时器事件
- 如何向JavaScript计时器添加控件
- Javascript计时器在每次回发时进行初始化
- javascript计时器不工作
- JavaScript计时器|随机行为
- iPad JavaScript计时器停止运行检测睡眠模式
- JavaScript 计时器禁用功能
- JavaScript 计时器在第一次按键时启动
- 如何在刷新页面时停止重置 JavaScript 计时器
- 1 页上有多个 JavaScript 计时器
- Javascript 计时器性能
- 同步 Javascript 计时器
- 如何让 AJAX 使用 rails 和 JavaScript 计时器工作
- 我可以在移动浏览器中使用javascript计时器吗?
- Javascript计时器只有几分钟和几秒钟