2

この特定の問題があります。(LARGE) レールのセットアップでは、バックボーン プロジェクトが/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.js必要がconfig.assets.precompileあり、このconfig.assets.paths行はまったく必要ありませんでした。

Rails がサブフォルダーをスキャンする方法は、非常に具体的で重要です。それを正しく理解すれば、すべてが簡単に機能するはずです。それがどのように機能するかを理解すると、実際には非常に強力になります。

プロのヒント:実際には多くのロケール ファイルがあるため、 とlocale/*.js組み合わせて使用​​することになりました。<%= javascript_include_tag "locale/#{I18n.locale}" %>

于 2013-06-27T10:43:45.530 に答える