1

我正在从“使用 Rails 进行敏捷 Web 开发”(第 4 版,Rails 3)学习 Rails,但在获取要应用的样式表时遇到了麻烦。为了快速带您了解我到目前为止所做的事情,我首先生成了一个脚手架:

 rails generate scaffold Product title:string description:text image_url:string price:decimal

然后当然是:

 rake db:migrate

然后我使用 db/seeds.rb 文件将一些数据加载到 products 表中。当我加载 localhost:3000/products 时,一切正常。现在,我将本书提供的样式表代码复制到脚手架生成的 products.css.scss 文件中:

.products {
  table {
    border-collapse: collapse;
  }
  table tr td {
    padding: 5px;
    vertical-align: top;
  }
 .list_image {
    width:  60px;
    height: 70px;
  }
  .list_description {
    width: 60%;

    dl {
      margin: 0;
    }
    dt {
      color:        #244;
      font-weight:  bold;
      font-size:    larger;
    }
    dd {
      margin: 0;
    }
  }
  .list_actions {
     font-size:    x-small;
     text-align:   right;
     padding-left: 1em;
  }
  .list_line_even {
    background:   #e0f8f8;
  }
  .list_line_odd {
    background:   #f8b0f8;
  }
}

现在,当我加载 localhost:3000/products 时,没有应用样式表。我可以在检查元素中看到样式表,但它没有应用。我已经尝试了所有可以想象的东西。首先,我确保这行代码在我的 application.html.erb 中:

  <%= stylesheet_link_tag "application", :media => "all" %>

鉴于我的新样式表(products.css.scss)在 assets/stylesheets/ 目录中,它应该被加载。当我检查 localhost:3000/products 上的元素时,我实际上在那里看到了样式表,但它没有被应用。我尝试的下一件事是运行:

rake assets:precompile

没有成功。删除 public/assets 目录后,我确保这行代码在我的 config/application.rb 文件中:

 config.assets.enabled = true

它是。接下来,我转到我的 assets/stylesheet/application.css 文件并尝试添加这行代码:

*= require products

再一次,没有成功。最后,我尝试重新启动服务器以查看是否有效果。又失败了。我在这里处于死胡同。拜托,我将不胜感激有关此事的任何和所有意见,因为我对此事感到筋疲力尽和沮丧。

4

2 回答 2

0

不确定这是否可行,但值得一试,尝试删除 .css,只保留 products.scss。也得到一个非常简单的风格,看看它是否有效。或者甚至内联它来查看。

于 2012-06-12T16:39:30.190 回答
0

我只花了一个小时找出答案,因为我自己也遇到了完全相同的问题。去你的 application.css.sass 并确保它有

/* ...
*= require_self
*= require_tree .
*/

在里面。此自动加载应用程序/资产/样式表中的所有其他 .css.sass,然后将它们预编译到 public/assets/stylesheets 为 1 个 statis css 文件,并将其提供给您的浏览器。

于 2012-08-21T06:46:31.257 回答