Rails试图从错误的位置加载资产

时间:2013-11-20 14:33:46

标签: javascript jquery ruby-on-rails twitter-bootstrap asset-pipeline

我的javascript和jquery有问题。除了一些自编脚本之外,我还在使用bootstrap。当我尝试javascript驱动的操作(即单击显示隐藏div的按钮或打开模式)时,浏览器不响应。浏览器的javascript控制台显示以下错误:

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:3000/ecns/css/bootstrap.min.css
Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:3000/ecns/js/bootstrap.min.js

请注意,该位置位于“ecns”文件夹中,而不是“资产”。 Ecns是我的模特之一,我目前正在浏览器中使用它,如果我去了我的应用程序的不同部分,错误看起来像这样:

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:3000/requests/js/bootstrap.min.js

我知道脚本本身没有问题,因为它们可以在不同的计算机上运行。我假设我在导轨中配置或安装不正确。作为参考,这是我的application.js:

//= require jquery
//= require jquery_ujs
//= require_tree .

以下是我的应用程序布局:

<head>
  <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
  <title>Site</title>
  <%= javascript_include_tag "application" %>
  <%= stylesheet_link_tag    "application", media: "all" %>
  <%= csrf_meta_tags %>
</head>
<body>
...
  <script src="js/bootstrap.min.js"></script>
</body>

为什么rails会查找资产的错误位置?我正在运行rails 3.2.1

1 个答案:

答案 0 :(得分:1)

Rails正在使用自定义资产管道,这会使所有资产在应用根目录的assets子目录下可见。

因此,如果您的基地址为http://www.something.com/,则所有资产都将位于http://www.something.com/assets/

之下

如果要导入CSS或JS文件,并且如果将它们正确放置在Rails中的app/assets/目录中,则应使用以下命令:

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

将它们放置在布局中的任何位置。

如果您仍想手动导入它们(我不推荐它),请使用以下命令:

<script src="assets/bootstrap.min.js"></script>
<link href="assets/bootstrap.min.css" rel="stylesheet" media="screen">