gpt4 book ai didi

ruby-on-rails - javascript_include_tag Rails 4在生产中生成 “/javascripts/”而不是 “/assets”

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

我有一个Rails 4应用程序

<%= javascript_include_tag "modernizr", "data-turbolinks-track" => true %>

在头上。在开发中,呈现以下HTML,并加载了modernizr:
<script data-turbolinks-track="true" src="/assets/modernizr.js?body=1"></script>

在生产中,将呈现followign HTML,并且不会加载modernizr(未找到404):
<script data-turbolinks-track="true" src="/javascripts/modernizr.js"></script>

在生产中,找到了 /assets/modernizr.js并且可以浏览。

Rails documentation表示 javascript_include_tag应该生成
<script data-turbolinks-track="true" src="/assets/modernizr.js?body=1"></script>

在生产中,我的 stylesheet_link_tag很好,可以链接到 /assets/目录。

为什么在生产环境中 javascript_include_tag链接到 /javascripts而不是 /assets,我该如何解决?

最佳答案

AssetUrlHelper的用法说明之一表明它将产生/ javascripts /网址
就像您所看到的:

#asset_path“应用程序”,键入::javascript#=> /javascripts/application.js

(摘自asset_url_helper.rb第117行-[1])

该代码看起来只有在缺少预编译 Assets 的情况下才能到达
因此您的 Assets 编译似乎无法正常工作(通常是我的部署
发生这种情况时会失败,所以也许您甚至没有解雇。

相同的asset_url_helper.rb将/ javascripts /部分称为“extname”,
使用以下映射了解如何生成名称:

 # Maps asset types to public directory.
ASSET_PUBLIC_DIRECTORIES = {
audio: '/audios',
font: '/fonts',
image: '/images',
javascript: '/javascripts',
stylesheet: '/stylesheets',
video: '/videos'
}

一个新的Rails 4应用程序在config / environments / production.rb中具有此功能
  # Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false

这似乎与您看到的行为相符。

关于ruby-on-rails - javascript_include_tag Rails 4在生产中生成 “/javascripts/”而不是 “/assets”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17622858/

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