Rails无法加载资产管道(Asset Pipeline)

7
我在开发环境下错误地运行了rake assets:precompile命令,导致Rails无法在开发模式下加载资产。我只能加载application.jsapplication.css两个文件。 application.js
//= require jquery
//= require jquery_ujs
//= require_tree .

application.css:

*= require_self
*= require_tree .

使用Rails 3.2.2版本


你能否发布你的 config/application.rbconfig/environments/development.rb 文件?这样会更容易追踪到你的问题。 - charleyc
6个回答

7

尝试从本地开发环境中删除已编译的资源:

rm -rf public/assets

编辑:

此外,请确保在您的development.rb文件中设置config.assets.compress = falseconfig.assets.debug = true


@macool,你能看一下下面的链接(https://dev59.com/n3DYa4cB1Zd3GeqPGPdV#16209053)并且确认它是否适用于你吗? - pungoyal

2

简而言之:

  1. $ rake assets:clean
  2. 重新启动Rails服务器 $ rails server -e development
  3. 清除浏览器缓存,或在应用程序页面上执行ctrl+shift+r

现在一切都应该与你运行rake assets:precompile之前一样了

-- tl;dr 结束 --

如果以上方法不起作用,则需要详细列出步骤:

  1. 运行$ rake assets:clean$ rm -rf public/assets 命令来删除生成的资产文件。
  2. 在application.rb中确保:
    • config.assets.enabled = true (启用rails的资产管道)
  3. 在development.rb中确保:
    • config.assets.compress = false (不要压缩资产文件)
    • config.assets.debug = true (不要将所有css和js文件合并成application.[cs|js])
    • config.assets.compile = true (或未设置 - 启用运行时编译资产文件)
    • config.serve_static_assets = false (或未设置)
  4. 最后,重新启动Rails服务器$ rails server -e development

这样应该就可以解决问题了。


0

运行rake assets:precompile会在public/assets下生成静态资产,使Rails可以直接提供服务。为了防止这种情况的发生,您可以:

  1. 手动删除这些文件或者
  2. 运行rake assets:clean

0
打开 config/application.rb 并设置以下内容:

config.assets.enabled = true


0
如果清理资产目录并确保配置正确(如前面的答案所示)没有起作用 - 是否有可能您正在使用页面缓存?
如果页面是使用指向已编译文件的src标记生成的,则现在需要重新生成它们。

它们没有使用src标签生成。它也没有使用页面缓存,我已经尝试删除所有缓存。 - macool

0
如果有帮助的话 - 我遇到了一个问题,即在开发中application.js/.css都没有加载(查看源代码时仍然可以看到清单行)。
我正在运行一个旧的rails 3.2.2应用程序,出于某种原因,我不得不进入并向清单文件(application.js和application.css)添加空白行,然后保存它们 - 然后资产开始正常工作。
我删除了空白行,它仍然有效,所以我认为可能只需要在文件上有一个更新的修改日期戳。

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