我想让CSS样式直接嵌入到页面中,而不是通过在页面中包含一个链接的方式引用CSS样式表,这样我可以使用Rails的stylesheet_link_tag
帮助方法将其添加到我的视图中。
目前我想到了以下解决方案:
%style(type="text/css")=File.read(physical_asset_path("email.css"))
我找不到任何Rails的帮助方法可以给出资产的物理路径 - physical_asset_path
只是我自己发明的虚拟方法。
有人知道如何在使用Rails 3.2.x时获取资源的物理路径吗?
是否有更容易/更好的方法来内联获取样式表 - 来自常见Rails资产路径内的css文件?
用例:大多数电子邮件客户端在未经确认用户的情况下不会访问外部资源(如css、图片)。因此,为了正确显示电子邮件,我需要将CSS嵌入到电子邮件的HTML中。
.html_safe
以避免引号被转义:Rails.application.assets.find_asset('email').to_s.html_safe
。 - hsgubert%style{type:"text/css"}= Rails.application.assets.find_asset('email_stylesheet').to_s
以及premailer-rails gem,CSS被找到、编译和内联 - 耶!工作的HTML电子邮件! - Troy%style{:type => "text/css", :'data-roadie-ignore' => true} = Rails.application.assets['email'].to_s.html_safe
- philoyeFile.read("#{Rails.root}/public/assets/#{Rails.application.assets_manifest.files.collect{|k, v| k if v['logical_path'] == 'email.css' }.compact.first}").html_safe
的意思是读取名为email.css
的文件并将其作为 HTML 代码呈现。其中的Rails.root
是指 Rails 应用程序的根目录,Rails.application.assets_manifest
则是 assets pipeline 中的清单文件。 - lee