在Rails 5中,应该将javascript_include_tag放在哪里?

时间:2019-05-17 11:42:47

标签: ruby-on-rails

我的application.html.erb文件中具有以下标记:<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

最初它位于head部分,这是我假设的Rails 5.2的默认设置。问题是它不会在我的assets / javascripts文件夹中加载JS文件。建议我将标签移动到<%= yield %>部分之后但仍在body内的某个位置。这工作正常,并且该文件夹中的JS加载正常。现在的问题是,我正在使用leaflet-rails gem,而当javascript_include_tagbody中时,地图将不会加载。工作?

我的资产/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.";
  }
});

1 个答案:

答案 0 :(得分:2)

这里的问题是您试图将事件处理程序附加到尚不存在的元素上。解决方案是标准的:在头中 load 加载代码,但是将运行推迟到页面加载之前。

cred: {
     nameValue: 'anonymous',
     emailValue: 'anonymous@gmail.com',
     passwordValue: 'anonymous121',
 },
 location: {
     addressValue: 'anonymous address',
     cityValue: 'anonymous',
     stateValue: 'anonymous',
     postalValue: 122133344,
 },
 card: {
     cardName: 'anonymous',
     cardNumber: 3243,
     securityCode: 123,
     expirationMonth: 7,
     expirationYear: 2031,
 },

或类似的东西。我不知道javascript