试图让jquery的nivo滑块插件在基本的rails应用程序上工作。尝试了最简单的概念证明,只需将演示放入公共文件夹中的静态html页面,但我仍然无法使其工作。这是我正在使用的当前标题:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<html lang="en">
<head>
<script type="text/javascript" src="../vendor/assets/javascripts/nivo-slider/demo/scripts/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="../vendor/assets/javascripts/nivo-slider/jquery.nivo.slider.js"></script>
<title>Nivo Slider Demo</title>
<link rel="stylesheet" href="../vendor/assets/javascripts/nivo-slider/themes/default/default.css" type="text/css" media="screen" />
<link rel="stylesheet" href="../vendor/assets/javascripts/nivo-slider/themes/light/light.css" type="text/css" media="screen" />
<link rel="stylesheet" href="../vendor/assets/javascripts/nivo-slider/themes/dark/dark.css" type="text/css" media="screen" />
<link rel="stylesheet" href="../vendor/assets/javascripts/nivo-slider/themes/bar/bar.css" type="text/css" media="screen" />
<link rel="stylesheet" href="../vendor/assets/javascripts/nivo-slider/nivo-slider.css" type="text/css" media="screen" />
<link rel="stylesheet" href="../vendor/assets/javascripts/nivo-slider/demo/style.css" type="text/css" media="screen" />
<script type="text/javascript">
$(window).load(function() {
$('#slider').nivoSlider();
});
</script>
</head>
每次在heroku中加载时我都会收到错误:ReferenceError:
$ is not defined
$(window).load(function() {
我对Web开发很新,但我不知道如何解决这个问题。想法?
答案 0 :(得分:2)
没有加载JQuery。您正在使用rails中的相对路径。如果您必须手动加载javascripts,则应考虑使用:
您可以<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
手动添加它。
更好的方法是对所有javascript使用asset pipeline。
您已从布局文件中取出javascript_include_tag "application"
代码,该代码通常位于:/app/views/layouts/application.html.erb
。
你应该把它放回去,然后使用asset pipeline为你处理jQuery和你的代码。
rails中允许相对路径,但可能无法按预期工作。 Rails仅提供来自公共目录而非供应商目录的资产。通常,您只需让rails将所有js / css编译为一个文件,并将其从public/assets
目录中提供。