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

馋奶兔 提交于 2021-02-10 05:01:18

问题


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?


回答1:


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.




回答2:


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.




回答3:


I was actually getting these kind of errors too. Mine looked like this:

F, [2018-06-16T17:46:02.121588 #6963] FATAL -- : 
ActionController::RoutingError (No route matches [GET] "/assets/theme/bootstrap.min.css"):

 [2018-06-18T12:55:20.169664 #18951] FATAL -- : 
ActionController::RoutingError (No route matches [GET] "/assets/theme/main.css"): 

And I never added any reference to these files in my application. So I did not immediately realize why these specific css files were being requested. Well, it happens that after my application received a 404 error or 500 error, it would load the corresponding 404.html or 500.html in the public directory. Those directories did reference these css files:

<head>
  <title>PAGE NOT FOUND (404)</title>
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="/assets/theme/bootstrap.min.css">
    <link rel="stylesheet" href="/assets/theme/main.css">
</head>

So remove the references here and errors will go away.



来源:https://stackoverflow.com/questions/40484739/actioncontrollerroutingerror-no-route-matches-get-assets-javascripts

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!