2017-03-14 18 views
0

私のindex.html.erbファイルでは、私は正常にonChangeを送信するフォームを持っています。しかし、これは私のフォームの後に<script>タグを置くだけで動作します。 welcome.jsの同じjsが実行されていないのはなぜですか?インデックスは/welcomeルートとして読み込まれます。Rails javascript onchangeは<script>で動作しますが、外部ではありません

# app/assets/javascripts/application.js 

//= require jquery 
//= require jquery_ujs 
//= require jquery-ace.min 
//= require jquery.sortable 
//= require chartkick 
//= require hammer 
//= require_tree . 

jsの外部ファイル

# app/assets/javascripts/welcome.js 

$('.chart-radio-icon').change(function(){ 
    $('#mega_form').submit(); 
}); 

ビュー再び

# views/welcome/index.html.erb 
<%= form_tag mega_chart_path, id: 'mega_form', remote: true do %> 
    <%= radio_button_tag :metric_type, :followers_count, true, :class => 'chart-radio-icon'%> 
    <%= label_tag(:followers, 'Followers', :class => 'chart-label chart-label-social') %> 

、JSの作品ではなく、外部から、ビューに<script>タグに入れました。

+0

JavaScriptがページにロードされていますか?あなたは 'console.log( 'Hello World');を取得できますか? –

+0

@ JamesMilani私は 'console.log( 'Hello World');を外部ファイルに入れて、ページにinspect> consoleに行きます。何も見えません。 – HashRocketSyntax

+0

サーバーを再起動しましたか?これは、あなたのassestsがローカルにあなたのパイプラインに含まれている方法に関連する可能性があります。 –

答えて

0

EDIT:

私たちはあなたのアセットファイルは、開発には含まれていないことを決定しましたので。健全性チェックのためにこれを試してみて、サーバーを再起動します。

Rails.application.config.assets.precompile = %w(application.js application.css) 

のEND EDIT

あなたがrequire_tree .を使用している、とwelcome.jsファイルがapp/assets/javascriptsにあるので、それは内のすべてのページに含まれることになるので、あなたの申請。 See here. 私は、ページロード時にイベントリスナーがDOM要素に割り当てられていないことが問題だと思います。あなたのJSコードをラップしてみてください:

#app/assets/javascripts/welcome.js 

$(document).ready(function(){ 
    .... 
}); 
+0

既存の関数をラップしようとしましたが、機能しませんでした – HashRocketSyntax

+0

あなたはページのhtmlを見て、 'welcome.js'ファイルがページに存在するかどうか確認できますか?何らかの理由でファイルが資産に含まれていないようです。どのバージョンのRailsを使用していますか? –

+0

ページの要素を調べてページソースを見ると、私は 'welcome.js'も' application.js'も見つけられませんでした。私はCtrl + Fを使用して、特に – HashRocketSyntax

関連する問題