ipatch
ipatch

Reputation: 4033

Using asset pipeline to include a javascript file in rails 4 project

I added a simple Javascript file to my rails project beer_background.js and put the file in app/assets/javascripts I want to load the beer_background.js when the application.html.erb is rendered, so I put the following line in the application.html.erb

<%= javascript_include_tag('beer_background.js') %>

However this is causing the rails app to produce error that looks like the following.

error

Update

application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require turbolinks
//= require_tree .
//= require d3

Upvotes: 2

Views: 157

Answers (2)

fkoessler
fkoessler

Reputation: 7257

You should include your javascript file from within the application.js file:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require turbolinks
//= require d3
//= require beer_background

or use //= require_tree . which will include all assets under the current directory

Upvotes: 1

Joe
Joe

Reputation: 2987

You shouldn't have to use javascript_include_tag. Having the files in the location you do and //= require_tree . in your application.js should be enough.

http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives

The require_tree directive tells Sprockets to recursively include all JavaScript files in the specified directory into the output. These paths must be specified relative to the manifest file. You can also use the require_directory directive which includes all JavaScript files only in the directory specified, without recursion.

Upvotes: 1

Related Questions