【问题标题】:SASS: Background image url and rails controller variablesSASS:背景图片 url 和 rails 控制器变量
【发布时间】:2016-10-18 06:55:45
【问题描述】:

我需要在 div 类中显示具有 background-image 属性的用户的个人资料图片。问题是,image-url 和asset-url 只能从 scss 文件中调用,而从 scss 文件中,@user 变量是不可见的。当我尝试访问用户 ID 时,它显示“未定义的局部变量或方法 `params'”。在其他主题中找不到答案。

background-image: image-url(<%= @user.avatar %>)

【问题讨论】:

    标签: css ruby-on-rails sass assets


    【解决方案1】:

    您的资产文件被设计为本质上是静态的,尤其是当它们通过预编译、指纹识别等方式进入资产管道时。您不能在每次不同用户登录时都更改它们,因为这需要全新的预编译、指纹识别和静态资产。

    现在预编译对您来说不是问题,因为您处于开发环境中,但在生产环境中将成为问题。

    这是style 属性更合适的罕见场景之一!或者,一些页面内的 Javascript 会更改与您的 div 的类/id/选择器匹配的所有元素的 style 属性。您可以为此使用asset_url 和/或image_url

    <img src="placeholder.gif" style="background-image: url(<%= asset_url(...)%>);" />
    

    请参阅AssetUrlHelper 文档,该文档可在任何 Rails 视图中找到!

    【讨论】:

    • 感谢您的回答。我会考虑在这里做出改变,但我仍然很想知道这是否可能。您所说的第二件事的问题是,sass 属性 image-url 和 assets-url 只能从 .scss 文件中调用,并且 rails 无法看到具有常规“背景:url”的资产图像。可能这根本做不到。
    • @DR_ 抱歉,我忘了提到您可以在视图中使用image_urlasset_url。我会把它添加到我的答案中。
    猜你喜欢
    • 2022-01-23
    • 2015-05-25
    • 2019-09-25
    • 2014-07-05
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多