In my rails 6 app, my jquery only works when I include <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
in the html 'body' and not the 'head'. I am wondering why this is the case and what I need to do to fix it. This is my application.html.erb
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>TumaJobs</title>
<%= csrf_meta_tags %>
<%= action_cable_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body>
<%= render 'shared/navbar' %>
<%= render 'shared/flashes' %>
<table class="layout-table">
<tr class="layout-content-row">
<td class="layout-content-column">
<%= yield %>
</td>
</tr>
<tr>
<td>
<%= render 'shared/footer' %>
</td>
</tr>
</table>
</body>
</html>
In my application.js, I have
require("bootstrap/dist/js/bootstrap")
require("jquery")
window.jQuery = $;
window.$ = $;
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("../search")
require("trix")
require("@rails/actiontext")
In search.js i have this jquery code
$(".jobs_search input").keyup(function() {
$.get($(".jobs_search").attr("action"), $(".jobs_search").serialize(), null, "script");
return false;
});
Try this
With javascript_pack_tag
in head
$(document).on('turbolinks:load', function(){
$(".jobs_search input").keyup(function() {
$.get($(".jobs_search").attr("action"), $(".jobs_search").serialize(), null, "script");
return false;
});
})