Rails 4中的stylesheet_link_tag资产目录

4
我刚开始学习Ruby On Rails开发,但是我无法解决这个问题:当我在文件/app/view/layouts/application.html.erb中使用helper stylesheet_link_tag时,我只能访问在/app/assets/stylesheets目录中的css文件。如果我想要包含一些不在该目录中而是在/app/assets/example目录中的css文件,该怎么办呢(仍然使用helper stylesheet_link_tag)?
我尝试查看论坛上关于此主题的其他页面,但它们没有提供帮助。我希望通过更具体的描述,有人可以帮助我解决这个问题……
2个回答

5
我解决了这个问题:在文件路径中只需要放置文件名而不是整个路径,Rails 将在/assets的所有子文件夹中搜索 css 文件。例如,如果我需要一个位于/assets/css_dir/layout.css的 css 文件,我只需要写下这段代码:
<%=  stylesheet_link_tag "layout" %> 

仅此而已。这个解决方案对我有效。


0

<%= stylesheet_link_tag "example/file" %> 应该适用于位于 /app/assets/example 的样式表。请参见Rails文档


我已经尝试过了:它不起作用。如果我使用以下行:<%= stylesheet_link_tag "example/app", media: "all" %>,Rails会生成此错误:“ActionController :: RoutingError(未找到匹配的路由[GET]”/stylesheets/example/app.css“)”。 - Samuele Bistoletti
只有当文件为空或不存在时,才会触发该错误。 - zwippie
我知道,但是该文件不为空,如果我将其移动到资产下的样式表子目录中,它就可以正常工作,不会触发任何异常。这是一个非常奇怪的情况。 - Samuele Bistoletti
@samuele - 我经常与这个问题作斗争,因为每次 Rails 发布后资产管道都会变得更糟。请确保文件通过 config/initializers/assets.rb 加载 - 无论是通配符还是单独加载。有了这个,您可能可以不使用 stylesheet_link_tag。但是,如果您不想在所有地方加载该样式表,则会遇到困难。 - JosephK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接