4

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
4

3 に答える 3

4

assets:precompileerb がクリーンな 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
于 2012-05-19T23:11:46.183 に答える
2

あなたはそれを行うことができますが、コードを 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 にも追加しないようにしてください。

于 2012-05-19T23:18:11.920 に答える
0

スプロケット//= 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_configgemの値が必要な場合

<%
  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) }
%>
于 2015-04-16T15:14:05.050 に答える