我试图在我的rails应用程序中添加一个javascript-plugin砌体,并想知道为什么它只适用于我的欢迎控制器(localhost:3000 /),但不适用于其他控制器如localhost:3000 / projects / 1,尽管我使用完全相同的代码。
我收到此错误:
获取localhost:3000 / projects / assets / jquery.masonry.js 404(未找到)
和
未捕获的TypeError:对象[object Object]没有方法'masonry'
(匿名函数)
e.resolveWith jquery.min.js
e.extend.ready jquery.min.js
c.addEventListener.z
我认为由于错误的路径localhost / projects / assets而不是localhost / assets而得到错误,但我无法找到解决方法。 欢迎任何帮助!
这是视图中的代码:
<% content_for(:scripts) do %>
<script type="text/javascript">
$(function(){
$('.squarescontainer').masonry({
// options
itemSelector : '.item',
isAnimated: true
});
});
</script>
<% end %>
这是我的application.rb:
<!DOCTYPE html>
<html>
<head>
<title>ifub</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<link type="text/css" rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans+Narrow&v1">
<link type="text/css" rel="stylesheet" href="http://fonts.googleapis.com/css?family=Oswald">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src = "assets/jquery.masonry.js"></script>
<script src = "assets/jquery.masonry.min.js"></script>
<%= yield(:head) %>
</head>
<body>
<%= render 'layouts/logo' %>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
<div class="frame">
<div class="container">
<%= yield %>
<%= yield :scripts %>
</div>
</div>
</body>
</html>
感谢您的帮助!
答案 0 :(得分:1)
您正在使用相对于当前路径的网址,因此如果您的网页为localhost:3000/project/page.html
,则JS网址为localhost:3000/project/assets/...
。尝试更改您的代码:
<script src = "/assets/jquery.masonry.js"></script>
<script src = "/assets/jquery.masonry.min.js"></script>
在资产之前添加“/”。在这种情况下,浏览器将相对于站点根目录加载脚本。
在这种情况下,即使您当前的页面是localhost:3000/project/page.html
,JS URL仍然是localhost:3000/assets/...
此外,您应该只连接一个版本的插件 - 最小化或不是