ActionController :: RoutingError(没有路由匹配[GET]“/ assets / javascripts

时间:2016-11-08 10:37:28

标签: javascript css ruby-on-rails

我正在运行一个开发服务器,我正在尝试在我的rails应用程序中加载一些静态页面和文件(images,css和javasripts)进行测试。 (一般来说,我是rails的新手.Rails安装已在Windows 10中的Linux子系统上完成)。 虽然我已将文件放在assets/imagesassets/javascriptsassets/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
<{1>}和

中的

development.rb

显然,rails应用程序看不到这些文件,但我仍然不明白我必须做些什么才能使它们可见。你能帮帮我吗?

3 个答案:

答案 0 :(得分:2)

您需要手动将这些文件包含在 application.js 中,或者只需编写//= require_tree .来加载所有js

同样,你必须为css工作。在*= require_tree .中添加application.css

答案 1 :(得分:0)

最后,为了解决此错误并将我的静态页面转移到Rails,我必须修改我的homepage.html.erb,如下所示:

样式表链接

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

以下也有效:

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

Javascript include

<%= 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需要对javascripts和样式表进行预编译:

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

最终网站可以运行,但可能会出现javascripts执行中的一些冲突。

答案 2 :(得分:0)

我实际上也遇到了这些错误。我看起来像这样:

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>

因此,请删除此处的引用,错误将消失。