获取http:// localhost:3000 / projects / assets / jquery.masonry.js 404(未找到)

时间:2012-12-27 17:54:14

标签: javascript ruby-on-rails-3.2 asset-pipeline

我试图在我的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>

感谢您的帮助!

1 个答案:

答案 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/...

此外,您应该只连接一个版本的插件 - 最小化或不是