ruby-on-rails - 在 Rails 5 中,我应该将 javascript_include_tag 放在哪里?
问题描述
我的 application.html.erb 文件中有以下标签:<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
最初它位于该head
部分中,这是我假设的 Rails 5.2 的默认设置。问题在于它不会在我的 assets/javascripts 文件夹中加载 JS 文件。有人建议我将标签移动到<%= yield %>
零件之后但仍在body
. 这工作正常,该文件夹中的 JS 加载正常。现在的问题是我正在使用gem 并且地图在其中leaflet-rails
时不会加载......我能做些什么来让这两个东西都起作用吗?javascript_include_tag
body
我的资产/javascripts/locations.js
var currentLocation = document.getElementById('coordinatesStore');
document.querySelector('.add-button').addEventListener('click', () => {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(({ coords: { latitude, longitude }}) => {
currentLocation.value = latitude + ", " + longitude;
});
} else {
currentLocation.value = "Geolocation is not supported by this browser.";
}
});
解决方案
这里的问题是您试图将事件处理程序附加到尚不存在的元素。解决方案是标准的:在头部加载代码,但推迟运行它直到页面加载。
// wrap your code in a function, so that it can be executed later
function attachLocationClickHandlers() {
Array.prototype.forEach.call(
document.querySelectorAll('.add-button'),
(button, i) => {
// do something on click
}
);
}
document.addEventListener("turbolinks:load", function() {
attachLocationClickHandlers()
})
(或类似的东西。我不知道 javascript)
推荐阅读
- php - 为什么 laravel 应用程序不读取我的代码?
- android - 如何解决错误:“找不到符号类 R”
- kubernetes - ubuntu 中的 Kubernetes 仪表板安装问题
- visual-studio-code - 如何在 Linux 上的 VScode 中键入反斜杠
- android - java.lang.IllegalArgumentException:错误的参数传递给棒棒糖上的相机服务
- ruby-on-rails - Shrinerb 产生模糊的 PDF 文件上传
- android - 如何使用 seekbar 实现 AudioTrack?
- php - PHP:如何使用动态变量
- python - 如何设置 pandas DataFrame 的索引以匹配日期时间序列的索引?
- go - Go 中的竞争条件变化