我有问题。我在Ruby on Rails 3.2.2上做了一个程序,但页面是index.html.erb 没有链接到位于app / assets / stylesheets / welcome.css.scss
中的样式表这是我的页面索引localhost:3000 / welcome / index
<h1>Bienvenido al curso de Ruby on Rails 3</h1>
<h2>Tutor: <%= @tutor %></h2>
<p>Esta es mi primera vista</p>
<footer>
<p>By : <%= @tutor %></p>
</footer>
源代码
<!DOCTYPE html>
<html>
<head>
<title>HelloWorld</title
<link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
<script src="/assets/application.js?body=1" type="text/javascript"></script>
<meta content="authenticity_token" name="csrf-param" />
<meta content="Jhnt5tNWpHa2lbZhPDSSwPJqdtPp94m9/ZrzZaA9054=" name="csrf-token" />
</head>
<body>
<h1>Bienvenido al curso de Ruby on Rails 3 </h1>
<h2>Tutor: Código Facilito</h2>
<p>Esta es mi primera vista</p>
<footer>
<p>By : Código Facilito</p>
</footer>
</body>
</html>
<link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
源代码中加载了页面app / assets / stylesheets / welcome.css.scss no 仅加载了app / assets / stylesheets / aplication.css
application_controller.rb
Layout
app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>HelloWorld</title
<%= stylesheet_link_tag "application", :media => "all" %>
<link rel="stylesheet" type="text/css" href="/assets/welcome.css.scss?body=1">
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>
</html>
File application.css
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
*= require welcome
*= require_tree .
*/
答案 0 :(得分:1)
由于种种原因,这不是你在Rails中包含CSS文件的方式。
首先,你的道路是错误的。您无法直接链接到/assets/*
,因为这不是将在生产中使用的网址。资产将被编译,缩小和指纹。您需要使用asset_path
,否则在生产中部署应用程序时,您的资产路径将会中断。
其次,提供给浏览器的文件不再具有scss
扩展名。它将是.css
文件。
第三,您不应该手动将?body=1
添加到样式表中。如果正确包含样式表,Rails会在适当的时候为您执行此操作。
有两种方法可以做到这一点:
首先,您可能需要在application.css中使用额外的CSS文件。这就是它的用途,它是用于指定要包含的其他CSS文件的清单。通过将以下内容添加到application.css中,或者通过修改该文件中的现有require
语句以包含额外的require welcome
行来执行此操作:
/**
*= require welcome
*/
第二种方法是直接包含文件,但使用Rails助手来获取路径和文件名是否正确:
<%= stylesheet_include_tag 'welcome' %>
无论哪种方式都可以工作。