在我的 index.html.erb
文件中,我有一个成功提交onChange的表单。但是,这仅适用于我在表单后面使用< script>
标记的情况。为什么 welcome.js
中的相同js没有运行?索引作为 / welcome
路由加载。
#app / assets / javascripts / application.js

 // = require jquery
 // = require jquery_ujs&#xA ; // = require jquery-ace.min
 // = require jquery.sortable
 // = require chartkick
 // = require hammer
 // = require_tree。
 代码>


 外部js文件


 #app / assets / javascripts / welcome.js&#xA ;
 $('。chart-radio-icon')。change(function(){
 $('#mega_form')。submit();
});



 view


 #views / welcome / index.html.erb&#xA ;<%= form_tag mega_chart_path,id:'mega_form',remote:true do%>
 <%= radio_button_tag:metric_type,:followers_count,true,:class => '图表-RADIO-图标' %>
 <%= label_tag(:关注者,'关注者',:class =>'chart-label chart-label-social')%>


&# xA; 同样,js在视图中放置在< script>
标记中时有效,但不在外部。
答案 0 :(得分:0)
修改强>
由于我们已确定您的资产文件未包含在开发中。要进行健全性检查,请尝试此操作并重新启动服务器:
Rails.application.config.assets.precompile = %w( application.js application.css )
结束编辑
由于您使用的是require_tree .
,并且welcome.js
文件位于app/assets/javascripts
,因此该文件将包含在您应用的所有网页上。 See here.
我认为问题是在页面加载时,事件监听器没有被分配给DOM元素。尝试将JS代码包装在:
#app/assets/javascripts/welcome.js
$(document).ready(function(){
....
});