javascript - 如何将 Rails 变量传递到必须动态刷新(每 60 秒)的 View 的 CSS?

标签 javascript ruby-on-rails css ruby ruby-on-rails-3

我有一个元素的 background-image 属性变量,我需要通过 Rails 应用程序中的某些后端逻辑每 60 秒修改一次。

如何从助手获取变量或方法值并将其放入 View 的 css 中?

目前,我有一个助手可以从另一个来源中挑选出一个更新的 URL。我需要每分钟触发此帮助程序调用,以便为被以下 css 屏蔽的源图像获取更新的 URL:

.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 是需要立即刷新的内容。

最佳答案

据我所知,您不能真正直接从您的 View 代码访问 CSS - 但是您当然可以使用 Javascript 应用 CSS 样式(JQuery 使它变得简单并且默认情况下与 rails 一起提供),并且您可以使用一个实例来自该 Javascript 中的 Controller 的变量。

或者,您可以在 View 中使用内联 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();
});

基本上,您可以设置一个调用 document ready 的调用,它将从您定义的某些操作中获取图像 url,然后将其设置在您的页面上,并“安排”自身在 60 秒后再次触发。

关于javascript - 如何将 Rails 变量传递到必须动态刷新(每 60 秒)的 View 的 CSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933442/

相关文章:

html - 带有背景图片的可调整大小的 div

javascript - 怎么把这3张图放在左边,3张放在右边呢?

javascript - 将div内容保存在cookie中

javascript - 如何避免登录用户通过控制台使用ajax?

javascript - 如何将模型对象数组转换为以模型 ID 作为键的对象?

jquery - 如何从 Bootstrap 3.1 中的导航栏链接中删除事件类?

php - Wordpress 上的左侧边栏不会创建菜单

javascript - React-native formik 表单引用始终为空

javascript - 将一些资源需求封装在 JavaScript 闭包中

ruby-on-rails - Rails 迁移 : is it ok to use 'nil' as the default value for a boolean field?