如何将单独的SCSS文件应用于Rails中的单独视图

时间:2016-07-13 21:48:46

标签: css ruby-on-rails sass

我目前正致力于登陆和登录/注册页面,并尝试将不同的样式表应用于每个布局。我尝试为我的家庭控制器创建一个单独的布局页面,并使用layout "home"在我的家庭控制器中调用它。我的app/views/layouts/home.html.erb文件与application.html.erb几乎相同,只是我将stylesheet_link_tag从<%= stylesheet_link_tag "application" %>更改为<%= stylesheet_link_tag "home" %>。虽然我的登录/注册页面中的样式不再适用于我的目标网页,但我的目标网页现在不再在我的app/assets/stylsheets/home.scss文件中提供任何样式。我是否应该更改布局文件而不仅仅是stylesheet_link_tag,或者我是否为每个视图设置了不正确的样式表?如果是这样,那么正确的方法是什么?

3 个答案:

答案 0 :(得分:0)

我不建议更改此<%= stylesheet_link_tag "application" %>,相反,在我看来,最好的方法是在assets/stylesheets为每个控制器创建一个文件夹。例如:我有home_page_controller.rb我会在assets/stylesheets中创建一个文件夹home_page然后我会创建一个scss文件,例如show。这使我可以轻松导航到我的文件。当然,你可以采用不同的方法,但这就是我对它的看法。

答案 1 :(得分:0)

通过将<body class="controller-<%= controller_name %>">放在我的application.html.erb文件中,并将我想要的任何样式放在我的&#34; home&#34;中,我想出来并将其付诸实践。 .controller-home下的观点

答案 2 :(得分:0)

由于rails generate scaffold生成的CSS和JS文件与您生成的控制器名称相同,因此可能会直观地认为这些文件只会由该控制器加载。事实并非如此。默认情况下,它们会全局加载,这就是重点。

像Marv-C所说,我不建议改变<%= stylesheet_link_tag "application" %>。在生产模式下,Rails通过将所有CSS加载到单个文件中来优化CSS。

这也意味着您可以按照自己的方式构建CSS文档。您可以通过使用敏感类和id选择器(您应该)来消除CSS文档之间的重叠。

如果你利用SASS嵌套,那应该没问题。 http://sass-lang.com/guide