17

Rails 3 アプリを Rails 6 に更新しようとしていますが、Javascript 関数にアクセスできないため、現在のデフォルトの webpacker に問題があります。

私は得ます:ReferenceError: Can't find variable: functionNameすべてのjs関数トリガーに対して。

私がしたことは次のとおりです。

  • /app/javascript に app_directory を作成します
  • 開発用 JavaScript ファイルを app_directory にコピーし、名前を index.js に変更しました
  • console.log('Hello World from Webpacker');index.js に追加
  • import "app_directory";/app/javascript/packs/application.js に追加
  • /config/initializers/content_security_policy.rb に追加:

    Rails.application.config.content_security_policy do |policy|
      policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development?
    end
    

「Hello World from Webpacker」がコンソールに記録されますが<div id="x" onclick="functionX()"></div>、ブラウザーで単純な JS 関数にアクセスしようとすると、参照エラーが発生します。

アセット パイプラインが webpacker に置き換えられたことは理解しています。これはモジュールを含めるのに最適なはずですが、単純な JS 関数をどのように含める必要がありますか? 私は何が欠けていますか?

前もって感謝します?

4

4 に答える 4

-4

公式レールアプリガイドから:

JavaScript を貼り付ける場所

Rails アセット パイプラインを使用するか、タグをビューに直接追加するかに関係なく、ローカル JavaScript ファイルを配置する場所を選択する必要があります。

ローカルの JavaScript ファイルには、次の 3 つの場所から選択できます。

app/assets/javascripts フォルダー、lib/assets/javascripts フォルダー、および vendor/assets/javascripts フォルダー

スクリプトの場所を選択するためのガイドラインは次のとおりです。

アプリケーション用に作成する JavaScript には app/assets/javascripts を使用します。

多くのアプリケーションで共有されるスクリプトには lib/assets/javascripts を使用します (ただし、可能であれば gem を使用してください)。

他の開発者からの jQuery プラグインなどのコピーには、 vendor/assets/javascripts を使用してください。最も単純なケースでは、すべての JavaScript ファイルが app/assets/javascripts フォルダーにある場合は、これ以上何もする必要はありません。

JavaScript ファイルを別の場所に追加すると、マニフェスト ファイルの変更方法を理解する必要があります。

詳細: http://railsapps.github.io/rails-javascript-include-external.html

于 2019-02-03T10:19:29.110 に答える