0

この質問によって、私は特定のページにのみ外部スクリプトを含める巧妙な手法を学びました。

しかし、フォローアップの問題が発生することはわかっています。//= require_tree .そのスクリプトを参照する関数 (に含まれています) が、他のすべてのページ (外部スクリプトが含まれていない場所) でエラーを引き起こしています。

Rails のどこに関数を配置するか (またはどのように記述すればよいか)、参照される外部スクリプトは、それが使用されるページ (アクション) にのみ含まれているため、他のすべてのページでエラーが発生しませんか?

4

4 に答える 4

2

私もかなり長い間、質問に対する答えを探していました。

最後に、私は気づきました:

  1. 私はアセット パイプラインが好きで、自分でアセットを処理したくありません。そのため、すべての js ファイルをアセット パイプラインで処理できるようにできる限りのことを試みています。

  2. content_for を使用すると、特定のビューでのみ必要な js を含めるのに非常に便利です。

レイアウトファイル(layouts/application.html.erb)で

  <%= yield :scripts %>

<head>タグの内側

次に、特定のビューで書き込みます

<% content_for :scripts do %>
<script>
you js code goes here regularly 
</script>
<% end %>

そうすれば、レールはそのビットを取得して :scripts に配置することを認識します。これにより、本当に必要なときにのみ js ビットがロードされるようになります。

特定のファイルが必要な場合:

これらのファイルを assets/javascripts の下のフォルダーに配置します。呼びましょうOthers

インOthersプレースyourjs.jsファイルとapplication.jsマニフェストにはそのツリーが含まれていません

現在、スプロケットはファイルを取りませんOthers

次に、上記の方法を使用してcontent_for特定のファイルを含めることができます

<% content_for :scripts do %>
 <%= javascript_include_tag "Others/yourjs.js" %>
<% end %>
于 2013-08-24T13:04:32.250 に答える
0

これは最も洗練された (または効率的な) 方法ではないかもしれませんが、この状況javascript_include_tagでは、レイアウトに を追加する前にコントローラーとアクションを確認します。例:

<% if :controller == 'maps' && :action == 'show' %> 
  <%= javascript_include_tag "https://maps.googleapis.com/maps/api/js" %> 
<% end %>
于 2013-08-24T11:56:03.517 に答える