2015-04-21 2 views
0

Добрый день,Rails в реальном времени шатра запросов к базе данных/тикер

Я хотел бы создать в реальном масштабе времени Newsticker/Marquee скроллер для моего рельсы приложение, похоже на то, что вы найдете на Sky Sports News телеканала.

Мне нужно иметь возможность запрашивать таблицу базы данных (что я могу) и отображать вывод в одной строке таблицы тикер/область выделения за раз, зацикливая ее. Кроме того, я хотел бы либо попробовать отображать этот запрос в режиме реального времени, либо очень часто, и обновлять выходные данные на концах клиентов без обновления страницы. (Как и в чатах или Твиттера.)

Вот некоторые основные код

Простой запрос, который показывает предмет и бумагу, если время начала < Текущее время и остановка времени> Текущее время

Модель

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> 

Если кто-то может использовать hepl или указать мне в правильном направлении, я действительно ценю это. Спасибо

На данный момент я, вероятно, мог бы использовать частичный, чтобы отобразить запрос и обновить частичный, не уверен, есть ли лучший метод, используя любые драгоценные камни, которые откроют прослушиватель событий или сокет?

ответ

1

У вас есть интересная проблема. Получил меня взволнованный, и я попробовал кое-что из себя!

Если вы хотите, чтобы содержимое обновлялось на стороне клиента (без перезагрузки страницы), вам нужно использовать javascript для повторного запроса сервера. В Rails вы, вероятно, поделитесь частичным, что отображается как из представления страницы, так и из представления API, которое используется в вызове AJAX.

Предположим, у вас есть модель под названием 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, который вызывает индекс элементов

JavaScripts/update.js

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

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

Надеюсь, это поможет вам начать работу в правое направление:

Смежные вопросы