【问题标题】:GET http://localhost:3000/projects/assets/jquery.masonry.js 404 (Not Found)获取 http://localhost:3000/projects/assets/jquery.masonry.js 404(未找到)
【发布时间】:2012-12-27 17:54:13
【问题描述】:

我试图在我的 Rails 应用程序中添加一个 javascript-plugin 砌体,但我想知道为什么它只适用于我的欢迎控制器 (localhost:3000/),但不适用于 localhost:3000/projects/1 等其他控制器,尽管我使用的是完全相同的代码。

我收到此错误:

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

Uncaught TypeError: Object [object Object] has no method '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>

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    您使用的是相对于当前路径的 URL,因此如果您的页面是 localhost:3000/project/page.html,则 JS url 将是 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/...

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

    【讨论】:

      猜你喜欢
      • 2013-06-03
      • 2016-08-06
      • 2021-09-14
      • 2018-05-25
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2021-03-11
      • 2018-11-22
      相关资源
      最近更新 更多