Kirkos
Kirkos

Reputation: 35

ActionController::RoutingError (No route matches [GET] "/assets/javascripts

I am running a development server and I'm trying to load some static pages and files (images, css and javasripts) in my rails application for testing. (In general, I'm new in rails. The Rails installation has been done on Linux subsystem in Windows 10). Although I have placed the files in assets/images, assets/javascripts and assets/stylesheets I couldn't manage to read these files in my test apprication when server runs. I receive the following errors almost for all files I have added:

ActionController::RoutingError (No route matches [GET] "/assets/javascripts/jquery.min.js"):

ActionController::RoutingError (No route matches [GET] "/assets/javascripts/bootstrap.min.js"):

ActionController::RoutingError (No route matches [GET] "/assets/javascripts/jqBootstrapValidation.js"):

and for images

ActionController::RoutingError (No route matches [GET] "/assets/images/portfolio/dreams-preview.png"):

The same applies for some css files also (not all).

I tried several ideas I found here in order to solve this but I had no luck. I tried to setup:

config.serve_static_files = true

in development.rb and

rake assets:precompile 

Obviously, these files are not visible by rails application but I still don't understand what I have to do to make them visible. Can you please help me on this?

Upvotes: 2

Views: 11087

Answers (2)

Kirkos
Kirkos

Reputation: 35

Finally, in order to resolve this error and transfer my static pages to Rails I had to modify my homepage.html.erb as follows:

Stylesheet links:

<%= stylesheet_link_tag "bootstrap.min.css" %>

the following also works:

<link href="assets/bootstrap.min.css" rel="stylesheet">

Javascript include:

<%= javascript_include_tag "bootstrap.min.js" %>

In general, I found that no precompilation is necessary. I tested and it works with or without precompilation. The following also works:

<script src="assets/bootstrap.min.js"></script>

Tag for images:

<%= image_tag("portfolio/dreams-preview.png", class: "img-responsive img-centered") %>

Rails use by default the normal path for images (assets/images). The full path should not be used. Unless the path for images is different, use only the path deeper than assets/images, if exists.

No changes were made in application.html.erb but precompilation for javascripts and stylesheets is necessary in assets.rb:

Rails.application.config.assets.precompile += ['agency.min.js', 'agency.min.css', ...] 

Eventually the site works, although some conflicts in the execution of javascripts might be appear.

Upvotes: 0

Chakreshwar Sharma
Chakreshwar Sharma

Reputation: 2610

You need to include these files in application.js manully or just write //= require_tree . to load all js

Similarly, you have to work for css. Add *= require_tree . in application.css.

Upvotes: 2

Related Questions