Rails关闭单个部分的CSS

时间:2015-09-11 20:19:31

标签: css ruby-on-rails

我有一个Rails 3.2应用程序。我使用部分Array来显示发票。相同的部分用于创建发票pdf。我正在使用wicked pdf,它在创建pdf时不包含CSS。没关系 - 看起来不错。

但是,当我在屏幕上显示部分内容时,我想关闭CSS。

是否有命令不在特定视图中包含css(部分)?

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

通常css不包含在partials中,但是在包含partial的布局或视图文件中。在这种情况下,如果适当或者在布局中有条件地排除它,则根本不要在特定视图中包含css。有点像:

<%= stylesheet_link_tag 'application' unless @flag_set_in_controller %>

答案 1 :(得分:0)

您可以在应用程序的这个方面使用自定义布局和CSS文件。但是,根据您对Camden的回答的评论,这似乎不太理想或可行(部分不需要CSS,但外部&#39;元素会这样做。)

否则,我认为您正在考虑使用放置在部分中的适当块中的JavaScript有条件地删除CSS。

您可以使用一小段JS删除外部CSS文件,如下所示:

$('link').remove(); // would remove all <link> elements
$('link').not('.myCSSToKeep').remove(); // would remove all <link> elements except for one with class='myCSSToKeep'

如果您的应用程序无法实现这一点,我相信您可以通过jQuery或类似方式通过他们的类手动更改样式。

$('.myClass').css('color', #fff); // and so on

如果可以从他们自己的CSS文件中收集/使用PDF的样式,那么第一种方法应该能够很好地工作......假设我正确地理解了这些要求:)!

答案 2 :(得分:0)

你可以只使用HTML和CSS来做到这一点,但需要注意的是IE和某些移动浏览器不支持CSS技术。您可以通过更改CSS来覆盖应用于发票的每个单独属性,从而获得完整的浏览器支持。

<强> CSS

#your_invoice {
  all: initial;
  * {
    all: unset;
  }
}

<强> HTML

<div id="your_invoice">
  <%= render "_invoice_pdf.html.erb"%>
</div>