我如何在 ruby​​ slim 中渲染 css 内联,因为输出 css 没有插入到样式标签中

Posted

技术标签:

【中文标题】我如何在 ruby​​ slim 中渲染 css 内联,因为输出 css 没有插入到样式标签中【英文标题】:How do i render css inline in ruby slim as output css is not being inserted inside a style tag 【发布时间】:2021-05-05 01:59:32 【问题描述】:

我在 ruby​​ 中有以下辅助函数:

def site_css_link_tag(merchant_canonical:, site_variant:, template_previewing:)
    # TODO: will remove variant argument
    is_js_generate = merchant_canonical.nil? && site_variant.nil? && template_previewing.nil?
    url = is_js_generate ? '' : css_api_v2_shopfront_sites_url(
            merchant: merchant_canonical,
            variant: site_variant,
            template_previewing: template_previewing
          )
    # return stylesheet_link_tag url, url, media: 'all', id: 'site-css', 'data-base-url': css_api_v2_shopfront_sites_url
    cssStyles = File.read(File.join(Rails.root, 'public', Webpacker.manifest.lookup('shopfront_redux.css'))).html_safe
    return cssStyles
  end

它正确返回所有样式,即我确实在浏览器中看到了这样的输出:

但是如何将它添加到样式标签中?

我看过 ruby​​ 文档here。它说对于 javascript 你可以有类似的东西:

javascript:
  alert('ok')

我尝试像这样对 css 做同样的事情:

style: 
    site_css_link_tag(merchant_canonical: @merchant&.canonical_name, site_variant: @variant, template_previewing: @template_previewing)

但是这种变化似乎不起作用?那么如何再次输出 css 呢?

【问题讨论】:

【参考方案1】:

试试css:

css: 
  site_css_link_tag(merchant_canonical: @merchant&.canonical_name, site_variant: @variant, template_previewing: @template_previewing)

【讨论】:

以上是关于我如何在 ruby​​ slim 中渲染 css 内联,因为输出 css 没有插入到样式标签中的主要内容,如果未能解决你的问题,请参考以下文章

在 Slim 中使用 Ruby on Rails 有条件地创建隐藏属性

ruby on rails vue 和 html.slim

Rails slim 将 html 渲染为文本

ruby slim_lint.rake

在 slim 中,如何在脚本顶部嵌入样式?

在 Ruby on Rails 中,如何渲染 JSON?