コンテキスト私はレールを学習しており、ファイルボタンと送信ボタンを持つ簡単なWebページを作成しようとしています。ユーザーが[送信]ボタンをクリックすると、ブラウザに「1つまたは複数のファイルを選択」が表示されるか、選択されたファイルのサイズが表示されます。1つのコントローラに2つのjavascriptファイルが生成されているため、js関数が2回実行されています
問題ウェブページで同じメッセージが2回警告されています。例えば、ファイルを選択せずにsubmitをクリックすると、「Select one or more files」という警告メッセージが表示されます。デバッグを使用すると、コントローラはコントローラ用に生成されたjavascriptを通過し、メッセージを2回表示します。
- コントローラーの同じcoffeescriptで2つのjavascriptが生成されたのはなぜですか?
- 2つのファイルの生成を停止するにはどうすればよいですか?
追加の詳細
私はmain_page.Iがmain_pageコントローラ用のCoffeeScriptを書いたコントローラを持っています。私は、Webページを立ち上げたとき、私は開発者向けのツールでチェック2つのJavaScriptファイル
<script src="/assets/main_page.js.self-fce0f72385b89610aec7efdb8340722a1a1c99772f861b071c3e56ffff373e96.js?body=1" data-turbolinks-track="true"></script>
<script src="/assets/main_page.self-08dee8c4f626e100c3f8d2edde72d6a239b69493ee184c06820641df835a4b8c.js?body=1" data-turbolinks-track="true"></script>
を見ることができますが、両方でJavaScriptコードは同じです。
CoffeeScriptのコードは以下の通りである -
@checkFileSize = ->
x = document.getElementById("file_tag")
if 'files' of x
if x.files.length is 0
txt = "Select one or more files."
else
for item in x.files
if 'size' in item
txt += "size: " + file.size + " bytes <br>"
alert txt
$ ->
$("#submit_tag").click (e) ->
e.preventDefault();
checkFileSize()
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>Learning Rails</title>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>=
</body>
</html>
あなたは追加の詳細情報が必要な場合、私に知らせてください。
EDITED application.js
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require raphael
//= require morris
//= require_tree .
'application.js'ファイルの内容を貼り付けてください。 – Emu
あなたの 'app/assets/javascript'フォルダに2つの' main_page'ファイルがあるようです。 –
@gen - 私は私のライブラリ構造のスナップショットを追加しました。 1つのmain_page.js.coffeeと1つのmain_page.js.jsがあります。 main_page.js.jsは自動生成されたjs版のcoffeescriptです。 –