【问题标题】:CSS not loading after refresh in Rails在 Rails 中刷新后 CSS 未加载
【发布时间】:2015-07-09 01:58:53
【问题描述】:

我是 Rails 新手,我创建了一个应用,其中用户有一个配置文件,并且可以使用编辑配置文件选项进行编辑。

在我拥有的控制器中,

ProfilesController

在我拥有的视图中,

index.html.erb
edit.html.erb

对于索引页面一切正常,但对于编辑页面,第一次加载很酷,然后刷新后,css文件没有加载。

网址看起来像http://localhost:3000/profiles/25/edit

无论刷新多少次,索引页一切正常,但编辑页令人失望。我检查了浏览器中的元素,上面写着GET http://localhost:3000/profiles/25/assets/bootstrap.min.css [HTTP/1.1 404 Not Found 650ms]

即它在localhost:3000/profiles/25/assets/ 中搜索不存在的文件,而不是在localhost:3000/assets/ 中搜索


编辑:

结构:

app/assets/stylesheets
application.css
bootstrap.min.css
style.css

在 application.html.erb 中,我将 application.css 链接为,

<%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>

和其他css文件一样

<link href="assets/style.css" rel="stylesheet">
<link href="assets/bootstrap.min.css" rel="stylesheet">

我的结构和链接是否正确?如果不是,那么在哪里放置和使用外部 css 文件。

请帮忙!!提前致谢。

【问题讨论】:

  • 你是如何加载引导程序的?
  • 我觉得assets的路径很奇怪profiles/25/assets/bootstrap.css,你能给我们看看代码吗?
  • @narush 你能发布你的项目/应用程序结构吗?
  • @infused in application.html 。它在第一次加载时工作正常,但在刷新编辑页面时不加载
  • @anonymousxxx 是浏览器发出的 GET 请求,我在检查元素后发现,应该是 /assets/bootstrap.css。

标签: html css ruby-on-rails refresh page-refresh


【解决方案1】:

默认的 Rails 资产管道假定您希望所有样式表应用于每个页面。起初我觉得这很尴尬,但很快意识到它非常符合 Rails 的“不要重复自己”的精神,并创建合理的默认值以节省开发人员的时间。大多数情况下,您编写的样式并不介意出现在所有页面上。

据我所知,您的应用中的一个页面加载正常,但另一个页面由于未找到 CSS 资产而失败。这向我表明,您正在做的不是 Rails 的资产管道,因此 bootstrap.css 没有被错误地加载。您能否在您的 app/assets 和 app/views 目录中搜索所有提及 bootstrap 的内容,并告诉我您发现了什么?

理想情况下,应该声明 Bootstrap 样式的唯一位置是 app/assets/stylesheets/application.css“清单文件”,它看起来像这样:

/*
 * This is a Sprockets manifest. See https://github.com/sstephenson/sprockets
 * It compiles all CSS for the old site design (pre-WPBoom redesign).
 *
 *= require bootstrap
 *= require jquery-ui
 *= require_tree .
 */

【讨论】:

  • 感谢您的回复!您能否告诉我如何在 application.html.erb 中链接外部 css(例如 bootstrap.css 和 style.css)文件。我已将它们放在 /assets/stylesheets 中?
  • @narush 您必须将外部 css(第三方)存储到供应商目录中,/vendor/assets/stylesheets
  • @narush 值得一读Rails' asset pipeline guideThis section 解释了如何在布局模板中包含特定资源,但如果可能,您应该尝试将所有样式保留在 application.css 中,然后仅在布局中包含该单个文件。一旦你习惯了这一点,从长远来看,它会减少工作量。
  • 谢谢哥们!有效! ....值得阅读管道指南。我们需要链接分机。 CSS 通过 而不是 来动态链接它们,即使在刷新后也是如此。
  • 啊,是的,当链接到 Rails 中的资产时(甚至是 &lt;img 标签中的图像 URL!甚至是 CSS 中提到的图像 URL!),您应该使用 Rails 的内置帮助程序,例如 image_tag (在 ERB 模板中)或image-url(在 CSS 中)而不是直接提供路径,因为根据您的部署环境配置,指定直接路径可能会导致您的所有资产链接中断,从而使您的实时站点无图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 2015-09-09
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
相关资源
最近更新 更多