简体   繁体   中英

How to load js in view AFTER serving application.js

I'm having a problem when pushing to heroku in my rails app.

Lots of functions become undefined , because <%= javascript_include_tags %> are being included before application.js , so libraries are not loaded.

I've tried the "defer" in my script tags, but didn't work.

It's happening ONLY in production, not in my dev environment.

How can I specify Rails to load JS in my view the latest?

Any advice would be great. Thanks

CASE:

My application.js

//= require jquery
//= require jquery_ujs
//= require jquery.lockfixed
//= require jquery.base64
//= require jquery.browser.mobile
//= require masonry.pkgd.min
//= require_directory ./utils
//= require_directory ./helpers
//= require tabs
//= require pining
//= require list
//= require handlebars
//= require jquery.cookiesdirective
//= require albums
//= require landing
//= require bxslider
//= require landing/waypoints
//= require landing/animate-waypoints
//= require handlebars-truncate-helper
//= require spots

My view

<%= javascript_include_tag "call_pining_function" %>

Call_pining_function partial

drawStaticPin();

Error in Heroku

Uncaught ReferenceError: drawStaticPin is not defined

Thanks

Hmm, I still aren't completely sure about this case. I assume that

//= require pining

is the file that contains the drawStaticPin, right? There are few options that I can see here:

First, Put your "call_pining_function" into the requires of application.js

Second, If the call_pining_function is defined after jQuery (DOM) is ready, possibly you could tie the function call to that event

jQuery(document).ready(function() {
    drawStaticPin();
};

Third, Ugly but does the job assuming that the code will eventually be loaded

while (typeof drawStaticPin === "undefined");
drawStaticPin();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM