Как передать переменную Rails в CSS представления, который должен обновляться динамически (каждые 60 секунд)? - PullRequest
1 голос
/ 20 января 2012

У меня есть переменная для атрибута background-image элемента, который мне нужно изменять каждые 60 секунд с помощью некоторой серверной логики в приложении rails.

Как вы можете получить значение переменной или метода из помощника в CSS для представления?

В настоящее время у меня есть помощник, который отбирает обновленный URL издругой источник.Мне нужно запускать этот вспомогательный вызов каждую минуту, чтобы получить обновленный URL для исходного изображения, которое маскируется следующим css:

.bg {
    background-image: url(http://mydomain.tld/someimage.jpg);
    background-repeat: no-repeat;    
    background-size: 203%;
    background-position: top left; 
    width: 256px;
    height: 256px;  
}

background-image url - это то, что необходимо обновить в минуту.

Ответы [ 2 ]

4 голосов
/ 20 января 2012

Насколько я знаю, вы не можете получить прямой доступ к CSS из своего кода представления - однако вы, безусловно, можете применять стили CSS с помощью Javascript (JQuery упрощает его и поставляется с рельсами по умолчанию), и вы можете использовать экземпляр переменная из вашего контроллера в этом Javascript.

В качестве альтернативы вы можете использовать встроенный CSS в своем представлении, но это кажется еще более неприятным, чем решение JS.

изм:

Вот суть того, о чем я говорю - это не проверено, но должно дать вам начало.

$(document).ready(function() {
    var refreshImage = function(){
        $.ajax({
              url: 'your helper url here',
              success: function( data ) {
                $(".bg").css("background-image" "url(" + data.url + ")"); 
                 setTimeout(refreshImage(), 60000); 
              }
        });
    }
    refreshImage();
});

По сути, вы можете настроить вызов готового документа, который будет извлекать URL-адрес изображения из определенного вами действия, затем установить его на своей странице и сам "запланировать" запуск снова через 60 секунд.

1 голос
/ 20 января 2012

Делайте это с помощью CSS на странице напрямую, точно так же, как и для любого другого динамического содержимого на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...