2015-09-18 27 views
1

我无法弄清楚如何使某些.scss文件在某些​​视图下工作。我删除了* = require_tree。从application.css.scss,但我不知道该从哪里去。 stylesheet_link_tag似乎无法识别.scss文件。我可以使用什么标签将.scss文件导入到视图中?Rails - 如何为1视图设置1个scss文件

我也试过为不同的视图创建不同的控制器,但是在我删除了require_tree之后,控制器不使用自动生成的.scss文件。

+0

你是什么意思'stylesheet_link_tag'无法识别'.scss'文件?你可以发布一些代码吗?它应该工作,所以我认为你的视图代码中存在一个问题。 – ptd

回答

1

你可能缺少的最重要的一条是,链轮将不会提供任何资产,主要是css和js需要在资产清单中声明。引用文档:

如果您有其他清单或个别样式表和JavaScript文件包括,您可以将它们添加到配置/初始化/ assets.rb预编译数组:

 Rails.application.config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js'] 

使用预期的结果名称(扩展名为.css),而不是源文件(扩展名为.scss)。

+0

谢谢。阅读时我对此感到困惑,并尝试使用.scss扩展名添加它。我的css文件现在正在工作,但我有我的应用程序中的每个视图应用css的原始问题。我只在一个视图中使用stylesheet_link_tag。 –

1

有一种方法来组织基于控制器的资产。 导轨指南有一个section about it

根据它,你可以为你的ProjectsController创建app/assets/stylesheets/projects.css.scss文件,包括像这样:

<%= stylesheet_link_tag params[:controller] %> 

执行此操作时,请确保您使用的不是require_tree指令,因为这将导致你的资产被包括不止一次。

基于

动作样式表可以类似地创建的:

<%= stylesheet_link_tag "#{params[:controller]}/#{params[:action]}" %> 
+0

谢谢。我已经读过这部分,但仍有点困惑。 –

2

除去application.css*= require_tree

在application.html附加:

<head> 
    <%= yield :stylesheets %> 
</head> 

而且每一页上呈现:

<% content_for :stylesheets do %> 
<%= stylesheet_link_tag "your file" %> 
<% end %> 
+0

我得到了这个工作,但CSS仍然适用于我的应用程序中的每个视图。我只将stylesheet_link_tag添加到一个视图中。我确实删除了application.css.scss中的require_tree标签。谢谢您的帮助。 –

+0

将产量添加到application.html.erb导致问题。来自一个页面的CSS也被包含在其他页面中,这也是我想要避免的。这只发生在我从一个页面导航到另一个页面的时候..也许这与样式如何被缓存在系统中有关系?不知道..是我所要做的,虽然是stylesheet_link_tag添加到我想要不同的CSS上的页面。 –

+0

css文件应该包含在head部分。 –

相关问题