我有这个具体问题。在(LARGE)rails设置中,我在/app/assets/reader/
中有一个骨干项目。我的所有javascript资源都动态预编译到reader.js
,这很好用。我在locale/
中的i10n文件不能很好用,因为它们不需要任何预编译。在开发中它工作正常,但在生产中它们不可用。
在我的/app/views/layouts/reader.html.erb
文件中,我有以下几行:
<%= javascript_include_tag "reader" %>
<%= javascript_include_tag "locale/en" %>
问题是较低的一个导致生产中出现404错误。
我尝试了以下替代方案:
<%= javascript_include_tag "en" %>
<%= javascript_include_tag "locale/en" %>
<%= javascript_include_tag "reader/locale/en" %>
这些似乎都不起作用。最后一个甚至打破了发展。
PS:applicaton.rb
我有:
...
config.assets.precompile += [
...
'reader.js',
...
]
...
config.assets.paths << File.join(Rails.root, 'app', 'assets', 'reader', 'locale')
答案 0 :(得分:1)
您删除了公共目录文件夹中的所有文件,然后重新启动了服务器?你的js文件夹里面还有一个文件夹
读取器/区域/ en.js
?仔细检查所有路径,如果它在开发中工作,您应该检查生产中的错误日志,以查看问题的来源。
答案 1 :(得分:1)
解决方案不在javascript_include_tag
中,而是在config.assets.precompile
格式化的方式。
默认情况下,Rails会在assets
内直接扫描任何子文件夹。这意味着必须将区域设置文件添加为locale/en.js
到config.assets.precompile
,并且根本不需要config.assets.paths
行。
rails扫描子文件夹的方式非常具体和重要。做到这一点,它应该像微风一样工作。一旦你知道它是如何工作的,它实际上会变得非常强大。
专业提示:
我最终将locale/*.js
与<%= javascript_include_tag "locale/#{I18n.locale}" %>
结合使用,因为我实际上有很多区域设置文件。