リンクがクリックされたときにページでjQueryが起動しないレールアプリがありますが、そうする必要があります。私が望んでいるのは、リンクがクリックされた場合、アラートメッセージが消え、AJAX 応答がコントローラーに送信されることです。クリックされたリンクのターボリンクをオフにし、jquery.turbolinks をロードしました。これにより、このリンクの問題が解決されたはずです (過去にもありました)。私は Ruby on Rails 4 を使用しています。
にある index.html.haml ファイルにはviews
、
= link_to "To be added", "#", :class => "levelup", 'data-no-turbolink' => true
application.js
フォルダー内のファイルに、javascripts
次の行がロードされています。
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
//= require_tree .
おそらくアラートを実行するはずのフォルダーにあるファイルとajaxファイルには、次のものが含まれていますstats_uploader.js
。javascripts
$('.levelup').click(function() {
alert("Yeah");
var level = $('.playerlevel').text();
alert(level); //Pat
level++;
alert(level); //Pat
$.ajax({type: "GET",
url: $(this).attr("href"),
dataType: "script",
data: level ,
error: function() {
alert("AJAX failed");
},
success: function() {
alert("Success");
}
});
});
ページのソースを表示すると、stats_uploader フォームが読み込まれ、適切なクラスが要素に適用されていることを示すこれらの関連行が表示されます。
<script data-turbolinks-track="true" src="/assets/jquery.turbolinks.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/turbolinks.js?body=1"></script>
<script data-turbolinks-track="true" src="/assets/stats_uploader.js?body=1"></script>
...
...
...
...
<div class='container'>
yessir
Player Level
<div class='playerlevel'>
1
</div>
<!-- TODO Make Buttons to click on -->
<a class="levelup" data-no-turbolink="true" href="#">To be added</a>
</div>