語境我學習軌道,並試圖創建一個簡單的網頁具有文件按鈕,提交按鈕。當用戶單擊提交按鈕時,瀏覽器應顯示「選擇一個或多個文件」或應顯示所選文件的大小。Rails的 - 兩個Java腳本文件都爲一個控制器生成,因此JS函數執行兩次
問題該網頁被兩次警告相同的消息。例如,如果我不選擇文件並單擊提交,我會收到兩次警報「選擇一個或多個文件」。當我使用調試時,控件遍歷爲控制器生成的JavaScript,並因此顯示消息兩次。
- 爲什麼兩個javascript爲控制器的相同coffeescript生成?
- 如何從如何產生停止兩個文件?
其他細節
我有一個控制器main_page.I寫了main_page控制器的CoffeeScript。但是,當我啓動網頁時,我可以看到兩個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'文件夾中有兩個'main_page'文件。 – 2016-08-14 07:20:30
@gen - 我添加了我的庫結構的快照。有一個main_page.js.coffee和一個main_page.js.js。 main_page.js.js是自動生成的js版本的coffeescript。 –