![](/img/trans.png)
[英]ActionController::RoutingError (No route matches [GET] “/javascripts/application.js”)
[英]ActionController::RoutingError (No route matches [GET] "/assets/javascripts
我正在运行开发服务器,并且尝试在Rails应用程序中加载一些静态页面和文件(图像,css和javasripts)以进行测试。 (通常,我是Rails的新手。已经在Windows 10的Linux子系统上完成了Rails的安装)。 尽管我已将文件放置在assets/images
, assets/javascripts
和assets/stylesheets
中,但是当服务器运行时,我无法在测试应用程序中读取这些文件。 对于添加的几乎所有文件,我都会收到以下错误:
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"):
和图像
ActionController::RoutingError (No route matches [GET] "/assets/images/portfolio/dreams-preview.png"):
同样的情况也适用于某些css文件(并非全部)。
为了解决这个问题,我尝试了一些在这里找到的想法,但是我没有运气。 我尝试设置:
config.serve_static_files = true
在development.rb
和
rake assets:precompile
显然,这些文件对于Rails应用程序是不可见的,但是我仍然不知道如何使它们可见。 你能帮我吗?
您需要手动将这些文件包含在application.js中,或者只写//= require_tree .
加载所有js
同样,您必须为CSS工作。 添加*= require_tree .
在application.css
。
最后,为了解决此错误并将静态页面转移到Rails,我必须如下修改homepage.html.erb
:
样式表链接 :
<%= stylesheet_link_tag "bootstrap.min.css" %>
以下内容也适用:
<link href="assets/bootstrap.min.css" rel="stylesheet">
JavaScript包括 :
<%= javascript_include_tag "bootstrap.min.js" %>
通常,我发现没有必要进行预编译。 我进行了测试,无论是否进行预编译,它都可以工作。 以下内容也适用:
<script src="assets/bootstrap.min.js"></script>
图片标签 :
<%= image_tag("portfolio/dreams-preview.png", class: "img-responsive img-centered") %>
默认情况下,Rails使用图像( assets/images
)的常规路径。 不应使用完整路径。 除非图像的路径不同,否则仅使用比assets/images
更深的路径(如果存在)。
在application.html.erb
中未进行任何更改,但在assets.rb
需要对javascript和样式表进行预编译:
Rails.application.config.assets.precompile += ['agency.min.js', 'agency.min.css', ...]
最终该站点可以运行,尽管在执行JavaScript时可能会出现一些冲突。
我实际上也遇到了这类错误。 我的看起来像这样:
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"):
而且我从未在我的应用程序中添加对这些文件的任何引用。 所以我没有立即意识到为什么要请求这些特定的CSS文件。 好吧,碰巧我的应用程序收到404错误或500错误后,它将在公共目录中加载相应的404.html或500.html。 这些目录确实引用了以下css文件:
<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>
因此,请删除此处的参考,错误将会消失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.