Rails应用程序不使用资产加载javascripts文件

时间:2014-03-31 17:01:43

标签: javascript ruby-on-rails http-status-code-404

在我的rails应用程序中,我尝试将CS​​S加载到我的视图中:

<link src="assets/stylesheets/myStyleSheet.css" type="text/css" rel="stylesheet">

它有效。

但是当我尝试加载如下的JavaScript文件时,

<script src="assets/javascripts/libs/modernizr-2.6.2.min.js" type="text/javascript"></script>

我收到404 error(某些图片也出现相同的错误)

我的所有文件都在正确的位置,所以有人有想法解决它吗?

感谢。

3 个答案:

答案 0 :(得分:1)

您最好使用asset pipeline将js和css文件包含到您的应用程序中。

对于当前示例,请将其放入app / assets / javascripts / application.js

//= require ./libs/modernizr-2.6.2

在你的app / assets / stylesheets / application.css.scss

/*
 *= require ./myStyleSheet
*/

并进入.html.erb文件(例如application.html.erb,<head>部分)

<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "application" %>

答案 1 :(得分:0)

在src开头的资源之前加上斜杠'/'。并且css文件应该包含链接href而不是src虽然它可以工作但不是一个好习惯。

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

答案 2 :(得分:0)

请在以下文件中添加资产管道的自定义路径:

 # config/application.rb
 config.assets.paths << Rails.root.join("app", "assets", "javascripts", "libs")

然后,在您的JavaScript清单文件(主要是application.js)中,需要js文件才能在执行pre-compilation时接受它:

//= require modernizr-2.6.2.min

在CSS清单文件(主要是application.css.sass)中,添加以下行:

/*
 *= require myStyleSheet
*/

如果要包含任何单独的外部JavaScript文件,可以将它们添加到config/application.rb中的预编译数组中:

config.assets.precompile += ['custom.min.js']

如果要查看通过资产路径加载的资产,可以在控制台中使用:

Rails.application.config.assets.paths

希望这可能是最好的选择。 :)