Rails 3.2 の application.js.erb で別のファイルを要求するにはどうすればよいですか? 次のことを試しましたが、うまくいきませんでした
<% if Rails.env == production %>
//= require production_config.js
<% else %>
//= require other_config.js
<% end %>
//= require jquery
//= require jquery_ujs
Rails 3.2 の application.js.erb で別のファイルを要求するにはどうすればよいですか? 次のことを試しましたが、うまくいきませんでした
<% if Rails.env == production %>
//= require production_config.js
<% else %>
//= require other_config.js
<% end %>
//= require jquery
//= require jquery_ujs
assets:precompile
erb がクリーンな js に変換される前であるため、サンプルは機能しません。そして、アセットの構文が間違っています。とは//= require 'production_config.rb'
? かもしれません'production_config.js'
。ただし、アセットのコメントに引用符やファイル拡張子を記述しないでください。
ファイルconfig.js.erbを記述し、次のように記述できます。
<% if Rails.env == production %>
productionConfig();
<% else %>
otherConfig();
<% end %>
あなたのapplication.jsファイルに簡単に書いてください
//= require config
//= require jquery
//= require jquery_ujs
あなたはそれを行うことができますが、コードを application.html.erb に含める必要があります (私が提案する head アクション内)。
production_config.jsファイルを「asset/javascript」フォルダーに追加する場合は、次を使用して追加できます。
<% if Rails.env == production %>
<%= javascript_include_tag "production_config" %>
<% else %>
<%= javascript_include_tag "other_config" %>
<% end %>
これを production_config.js.coffee と呼ばないようにし (これらは自動的にバンドルされます)、application.js にも追加しないようにしてください。
スプロケット//= require
はファイルの最初からステートメントを設定する必要があるため、機能しません。
このような場合は、ルビー メソッドを使用できます: sprokets github
また、別のファイルで行う方がよいでしょう。このようなもの:
アプリケーション.js
//= require 'config'
//= require 'jquery'
config.js.erb
<% require_asset(Rails.env.production? ? 'production_config' : 'other_config') %>
PSもう1つの便利な方法はdepend_on
、他のファイルの変更後にアセットを再コンパイルする必要がある場合に役立ちます
元。rails_config
gemの値が必要な場合
<%
paths = %w(config/settings.yml config/settings.local.yml config/settings)
paths.map(&Rails.root.method(:join)).each { |full_path| depend_on(full_path) if File.exist?(full_path) }
%>