2

我有这个特定的问题。在(大型)rails 设置中,我有一个/app/assets/reader/. 我所有的 javascript 资产都动态预编译成reader.js,这很好用。但是,我的 i10n 文件效果不佳,locale/因为它们不需要任何预编译。在开发中它工作正常,但在生产中它们不可用。

在我的/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')
4

2 回答 2

1

您删除了公共目录文件夹中的所有文件然后重新启动服务器?在您的 js 文件夹中,您还有一个文件夹

阅读器/语言环境/en.js

? 仔细检查所有路径,如果它在开发中有效,您应该检查生产中的错误日志以查看问题来自何处。

于 2013-06-06T16:24:55.790 回答
1

解决方案不在 . 中javascript_include_tag,而是在config.assets.precompile格式化的方式中。

默认情况下,Rails 会直接扫描assets. 这意味着必须将语言环境文件添加为locale/en.jsto config.assets.precompile,并且该config.assets.paths行甚至根本不需要。

rails 扫描子文件夹的方式非常具体且重要。做对了,一切都会变得轻而易举。一旦你知道它是如何工作的,它实际上就会变得非常强大。

专业提示:我最终locale/*.js与 结合使用<%= javascript_include_tag "locale/#{I18n.locale}" %>,因为我实际上有很多语言环境文件。

于 2013-06-27T10:43:45.530 回答