2015-04-21 36 views
0

好日子,Rails的实时数据库查询选取框/股票

我想创造我的Rails应用实时字幕跑马灯/字幕滚动,到你会发现在天空体育新闻的电视频道有什么相似。

我需要能够查询数据库表(我可以),并在循环显示输出在ticker/marquee一个表行中。此外,我想尝试实时或非常频繁地显示此查询,并更新客户端上的输出而不刷新页面。 (类似于聊天室或Twitter的饲料。)

下面是一些基本的代码

简单查询足见其主题和纸,如果开始时间是<当前时间和停止时间>当前时间

型号

Timetable.where("start < ? AND stop > ?", Time.now, Time.now).order('id ASC').pluck(:subject, :paper) 

的Html

<table><tbody><% @timetables.each do |timetable| %><tr><td><%= timetable[0] %></td><td>%= timetable[1] %></td></tr><% end %></tbody></table> 

如果任何人能够帮助或指引我走向正确的方向,我真的很感激。谢谢

目前我可能可以使用partial来显示查询并更新partial,不确定是否有更好的方法使用任何gem打开事件监听器或套接字?

回答

1

有趣的问题,你在这里。让我兴奋,我自己尝试了一些东西!

如果您希望在客户端刷新内容(无页面重新加载),则需要使用javascript重复查询服务器。在Rails中,您可能会使用页面视图和用于AJAX调用的API视图呈现的部分内容。

我们假设您有一个名为Item的模型,其中您想要在页面上显示最新的3个模型,然后每5秒钟获取最新的数据以更新页面。你可能想创造的东西,如下所示:

控制器/ content_controller.rb

class ContentController < ApplicationController 
    def show 
    end 
end 

的意见/内容/ show.haml

%h1 Page with updated items 

.updateme 
    = render "items/latest" 

控制器/ items_controller .rb

class ItemsController < ApplicationController 
    layout false 

    def index 
    end 
end 

的意见/项目/ index.haml

= render "items/latest" 

的意见//_latest项目。HAML

- Item.last(3).each do |item| 
    = item.subject 

最后但并非最不重要,你将需要添加的JavaScript调用的项目

JavaScript的索引/ update.js

function updateItems() { 
    $.ajax({ 
    url: "/items", 
    }).done(function(data) { 
    $("div.updateme").html(data) 
    }); 
} 

$(document).ready(function() { 
    window.setInterval(function(){ 
    updateItems(); 
    }, 5000); 
}); 

希望这可以让你的开始正确的方向:)