【问题标题】:Passing ruby tag in CSS在 CSS 中传递 ruby​​ 标签
【发布时间】:2012-05-23 07:38:07
【问题描述】:

我想动态更改我的应用程序背景。对于该背景图像,我将图像保存在 DB 中,只有一行,如果我上传新的背景图像,它将更新 DB 第一行,它会影响背景好吧。

这是我的视图代码

<%=ChangeBackdrops.first.media.url%>

这是我的css

body {
  background-image: url(/../../../images/back.jpg);
  background-repeat:no-repeat;
  background-position:center center;
  background-attachment:fixed;
  -o-background-size: 100% 100%, auto;
  -moz-background-size: 100% 100%, auto;
  -webkit-background-size: 100% 100%, auto;
  background-size: 100% 100%, auto;
}

如何在该 CSS 中传递我的 ruby​​ 标签?就是这个意思?

background-image: url(<%=ChangeBackdrops.first.media.url%>)

【问题讨论】:

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


    【解决方案1】:

    实现这一点的最简单方法是在渲染视图时将代码放在style 标记内。尝试在application.html.erb 中编写以下代码(例如):

    <head>
      ...
      <link rel="stylesheet" ... /> <!-- load your common stylesheet --!>
      <!-- and now override the background-image --!>
      <style>
        body {
          background-image: url("#{ChangeBackdrops.first.media.url}");
        }
      </style>
    </head>
    

    【讨论】:

    • 我是这样加载的。它是否正确?因为这不起作用。
    • ChangeBackdrops.first.media.url 的返回值是什么样的?
    • 可以,但我不想在 application.html.erb 中添加样式标签。
    • @Ruk 我也有同样的情况。虽然我不认为我想要 html.erb 文件中的样式表标签,但我认为现在需要它:因为它是运行时的,所以预编译资产没有典型的缓存;发送另一个 CSS 文件只会通过添加更多要加载的文件来减慢页面渲染时间。只需将所有页面内样式放在一个理智的地方。
    【解决方案2】:

    你使用什么版本的rails?您使用资产管道吗?在这种情况下,您只需将 erb 扩展名添加到您的 css 文件并使用您建议的行 &lt;%=ChangeBackdrops.first.media.url%&gt;。您可能需要检查this guide,它的“预处理”部分

    【讨论】:

    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2017-04-08
    • 1970-01-01
    • 2015-02-20
    相关资源
    最近更新 更多