Rails javascript onchange适用于<script>但不适用于外部

时间:2017-03-14 17:17:56

标签: javascript jquery ruby-on-rails javascript-events views

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

&#xA;&#xA;
 #app / assets / javascripts / application.js&#xA;&#xA; // = require jquery&#xA; // = require jquery_ujs&#xA ; // = require jquery-ace.min&#xA; // = require jquery.sortable&#xA; // = require chartkick&#xA; // = require hammer&#xA; // = require_tree。&#xA;  
&#xA;&#xA;

外部js文件

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

view

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

同样,js在视图中放置在&lt; script&gt; 标记中时有效,但不在外部。

&#xA;

1 个答案:

答案 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(){
  ....
});