Rails 3.2.2不使用css

时间:2014-07-02 02:40:15

标签: css ruby-on-rails

我有问题。我在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 .
*/

1 个答案:

答案 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' %>
无论哪种方式都可以工作。