在开发模式上我设置了config.assets.compile = true 。一切正常,渲-6ren">
gpt4 book ai didi

ruby-on-rails-3 - Rails Assets 管道 - image_path 助手仅在开发中工作

转载 作者:行者123 更新时间:2023-12-03 00:08:47 25 4
gpt4 key购买 nike

我在 Rails (3.2.7) 中遇到 Assets 预编译问题。

我添加了一个像这样的图标:

<link rel="icon" type="image/png" href="<%= image_path("favicon.png") %>" />

在开发模式上我设置了config.assets.compile = true 。一切正常,渲染的 HTML 如下所示:

<link rel="icon" type="image/png" href="/assets/favicon.png" />

但在生产中,我设置 config.assets.compile = false ,我收到错误

Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Home#index
...
favicon.png isn't precompiled

我已经跑了rake assets:precompile我可以清楚地看到,该 Assets 可在 public/assets/favicon.png 下找到.

我知道,我可以设置 config.assets.compile = true在生产中,但我不想这样做(由于性能原因)。

有人知道为什么我的 Rails 应用程序无法解析生产中 Assets 的正确路径吗?谢谢!

<小时/>

更新:也许了解一下也很有用:它不仅发生在图像上,也发生在其他 Assets 上。

例如<%= stylesheet_link_tag "screen", :media => "all" %>还会产生错误 screen.css isn't precompiled当 config.assets.compile 设置为 false 时。

最佳答案

您必须告诉 Rails 哪些资源要预编译。您可以在 config/application.rbconfig/environments/Production.rb 中使用 config.assets.precompile config key 执行此操作。 .

Rails 以要预编译的默认 Assets 列表开始,包括 ["application.js", "application.css"],但如果您也希望自己的 Assets 也被预编译,则可以将它们添加到列表中。

例如:

# config/application.rb
module MyApp
class Application < Rails::Application
# other config ...

config.assets.precompile += ["screen.css", "*.png"]
end
end

关于ruby-on-rails-3 - Rails Assets 管道 - image_path 助手仅在开发中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12368037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com