我试图在我的rails应用程序中添加一个javascript插件砌体,并想知道为什么它只适用于我的欢迎控制器(localhost:3000/),而不适用于其他控制器,如localhost:3000/projects/1,尽管我使用的代码完全相同。
我知道这个错误:
获取localhost:3000/projects/assets/jquery.masonry.js 404 (未找到)
和
未明的TypeError:对象对象没有“砖石”方法 (匿名函数) e.resolveWith jquery.min.js e.extend.ready jquery.min.js c.addEventListener.z
我是因为错误的路径localhost/project/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>
谢谢你的帮忙!
发布于 2012-12-27 10:00:55
您使用的是相对于当前路径的URL,所以如果您的页面是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仍然是localhost:3000/assets/...
此外,您应该只连接一个版本的插件-最小化与否。
https://stackoverflow.com/questions/14058978
复制相似问题