Javascript does not work from a bootstrap template in rails

前端 未结 3 884
心在旅途
心在旅途 2021-01-16 04:47

I have created a new rails app and installed all the necessary gems. Added all the files. Updated the application.js file. Everything works but for some reason all the javas

3条回答
  •  暖寄归人
    2021-01-16 05:36

    I am editing my answer, because I still had problems with the Asset Pipeline.

    I add the following resources that may help in finding a solution and I will post the solution to the problem once I solved it.

    https://launchschool.com/blog/rails-asset-pipeline-best-practices

    https://railsapps.github.io/rails-javascript-include-external.html

    https://reinteractive.com/posts/116-12-tips-for-the-rails-asset-pipeline

    I read all the guides that can be found by searching rails asset pipeline, but I will not link them all

    My advice is to check the fingerprint of the application.css and application.js both with the Chrome Developer Tools (by going in any screen element, opening the developer toolbox with f12 and checking any style of any div or any js file). You will need to check which fingerprint version of the file is used, then open that version with the text editor and check what is loaded in the fingerprint version of the file.

    If your file (for ex. user.js) is loaded at the bottom of the manifest, you should easily find it at the bottom of your fingerprinted application.js.

    If you want to update this file you can run

    rake assets:precompile

    This will precompile assets only in development, for production you need to specify the environment. It will change that fingerprinted file application.css and application.js with the editing you have done.

    You can also check the file at the following address localhost:3000/assets/yourjsfile.js or check the fingerprint version by following localhost:3000/assets/application-yourfingerprint.js

    As you can see, many files are included in that public/assets folder, you can delete them with rake assets:clean or -rf public/assets and then run rake assets:precompile, it will precompile again assets.

    If nothing is included, then your application.js is not being loaded. You may try the following as I read on different posts:

    1. Include the file in the config/initializers/assets.rb with the following line of code:

      Rails.application.config.assets.precompile += %w( user.js )
      
    2. Start the rails c and run Rails.application.config.assets.paths This command will show in red the paths that are automatically included, for example those inside App, Lib and Vendor, in green those that you included by adding inside config/application.rb the follwing code to add new path

      config.assets.paths << Rails.root.join("vendor","assets", "fonts")
      

    Another error i made in the past was not using the correct sprockets syntax, you can check it at the following link ( i was using require_user instead of require user):

    https://github.com/rails/sprockets#sprockets-directives

    My problem was that I had under App/assets/javascript two files named user (user.coffee and user.js). The first to be loaded was user.coffee which was empty. I found the solution thanks to the answer of trickydiddy

提交回复
热议问题