Rails资产管道:将资产包含在公用文件夹而不是资产文件夹中是否是一种好的做法?

我一直在努力将Google Analytics添加到我的Rails 4应用程序中(请参阅此post )。

我通过在/public/assets/google-analytics.js的新文件中添加Google提供的JavaScript代码来/public/assets/google-analytics.js 。 在application.html.erb我包括:

  

这有效但我没有将JavaScript文件包含在app/assets/javascripts/ ,而是将其放在公共文件夹中。 因此不编译JavaScript文件。

你会说这是好习惯/ Rails方式吗?

我选择这个解决方案,因为否则我只能将Rails.application.config.assets.precompile += ['google-analytics.js']到config / environments / production.rb(它没有如果我将它添加到初始化程序assets.rb)。 我发现这比上述解决方案更混乱。

在您的情况下,最好只将分析脚本添加到views / layouts / application.html.erb的head部分

另一种选择是使用名为_analytics.hml.erb的文件创建一个视图/共享目录,并在其中粘贴分析标记,并在您需要的视图中执行此操作:

 <%= render 'shared/analytics' %> 

如果你只是部分地渲染它,则根本不需要预先编译它。 什么是“最佳实践”取决于意见,但如果您将其部分渲染,您将自己花一些时间来配置和排除尝试执行此操作的方式。

在我看来,部分是更“’Railsy’的方式,除非你特别需要有人能够访问www.your-site.com/analytics.js