JavaScript не будет работать при развертывании Heroku, но работает локально
Я написал эту функцию в app/assets/javascripts/expand.js
$( document ).ready(function() {
var open = $('.toggle-expand'),
a = $('ul').find('a');
open.click(function(e){
e.preventDefault();
var $this = $(this),
speed = 500;
if($this.hasClass('active') === true) {
$this.removeClass('active').next('.expandable').slideUp(speed);
} else if(a.hasClass('active') === false) {
$this.addClass('active').next('.expandable').slideDown(speed);
} else {
a.removeClass('active').next('.expandable').slideUp(speed);
$this.addClass('active').next('.expandable').delay(speed).slideDown(speed);
}
});
});
Сценарий прекрасно работает локально и ведет себя, как и ожидалось, но при развертывании в Heroku он перестает работать полностью.
для справки, вот HTML-код, над которым работает скрипт:
<ul>
<li>
<a href="#" class="toggle-expand"><h2>text here</h2></a>
<div class="expandable">
...more stuff here
</div>
</li>
...more li tags here
</ul>
Отладку я уже сделал:
Я смог воспроизвести проблему в моей среде разработки, изменив строку в development.rb на config.assets.debug = false
, Я не знаю достаточно о рельсах, чтобы понять это.
Я предварительно скомпилировал все активы с RAILS_ENV=production bundle exec rake assets:precompile
, и подтолкнул это.
после того, как это не сработало, я попытался снова скомпилировать после git rm -r public/assets/
Когда это не сработало, я использовал инструменты разработчика на chrome или firefox, чтобы просмотреть все увеличенные js, загружаемые в мою производственную среду. Я видел, что мои функции, кажется, были загружены, но потом я не вижу ожидаемой функциональности, поэтому я тоже не знаю, что там происходит.
Чтобы увидеть то, что я увидел, вы можете зайти на https://www.shopperbot.com/about и посмотреть ресурс https://www.shopperbot.com/assets/application-db55113ff25f4decb133ccb74aa98298822de2381cddc0ae3fa8c03b65180dd0.js
Это огромный файл, поэтому вам нужно искать слово для расширения. это слово уникально для рассматриваемой функции.
Я все еще очень плохо знаком с рельсами, поэтому я не уверен, куда идти дальше. Я мог бы попытаться изменить местоположение моего JS, но я не думаю, что это было бы идеально. У кого-нибудь есть предложения?
Потому что все это прекрасно работает в моей локальной среде... Я подозреваю, что я делаю какую-то ошибку новичка, которую можно исправить с помощью какого-то волшебного лайнера, которого я еще не нашел.
1 ответ
Как отметил Ян Климо в комментарии, я удалил API карт Google и все еще имел функции, ожидающие, что API будет существовать. Из-за этих ошибок мой скрипт не работал.
Решением было удалить все ссылки на удаленный API.