砌体 jquery 不会在生产中呈现(Heroku)

Posted

技术标签:

【中文标题】砌体 jquery 不会在生产中呈现(Heroku)【英文标题】:Masonry jquery doesn't render in production (Heroku) 【发布时间】:2013-11-12 05:47:10 【问题描述】:

在本地主机上,我的 Masonry 工作得很好。但是,在我推到 Heroku 之后,它在生产中不起作用。我已经预编译了所有资产。

我将 masonry.pkgd.min.js 文件存储在我的 assets/javascripts 文件夹中

这是我的 applicaiton.html.erb:

<!DOCTYPE html>
<html>
<head>
  <title><%= content_for?(:title) ? yield(:title) + ' @ SeekAfter' : "SeekAfter" %></title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= render 'layouts/navigation' %>

<div class = 'container'>
  <%= render 'layouts/messages' %>
  <%= yield %>
</div>
<p style='text-align:center'><em>A place to have conversations</em> | <%= link_to "Contact us", contact_path %></p>
</body>
</html>

这是我的索引视图:

<div id="masonry-container" class="js-masonry transitions-enabled infinite-scroll clearfix"
  data-masonry-options=' "itemSelector": ".thumbnail", "gutter": 5'>
    <% @conversations.each do |conversation| %>
        <!-- <div class="col-sm-6 col-md-4"> -->
          <div class="thumbnail">
                <h3><%= link_to conversation.title, conversation %></h2>
                <p>Comments: <span class='badge'><%= conversation.comments.count %></span></p>
                <p><%= simple_format(hashtag_link(conversation.description)) %></p>
                <p><b>Submitted by:</b> <%= link_to conversation.user.username, user_path(conversation.user.id) %></p>
                <h3> Recent comments: </h3>
                <hr>
                <% conversation.comments.sort_by|t| - t.created_at.to_i.take(3).each do |c| %>
                    <div class='media'>
                        <%= image_tag c.user.profile_pic.url(:thumb), class: 'media-object pull-left img-polaroid' %>
                      <div class='media-body'>
                        <h4 class='media-heading'><%= link_to c.user.username, user_path(c.user.id) %><small> @ <%=c.created_at.strftime("%m/%d/%Y at %I:%M%p") %></small></h4>
                        <%= simple_format(hashtag_link(c.message)) %>
                      </div>
                    </div>
                    <hr>
                  <% end %>
                <%= editing_for_current_user(conversation) %>
          </div>
        <!-- </div> -->
    <% end %>
</div>

就像我说的,在开发中一切正常,但在生产中根本就不行。

这是发展:

这是生产:

【问题讨论】:

您是否验证了 masonry js 是否显示,这取决于您的堆栈以及您设置资产的方式,它可能全部包含在 application.js 中并可能单独列出 是的,它在里面。它只是由于某种原因没有出现。 嘿,抱歉,我很困惑,javascript 确实出现在生产环境中,还是没有? 代码在预编译的 .js 文件中,但它不起作用。 更新: 我刚刚意识到没有一个 jquery 在该站点上运行。我也不能在我的任何 link_to 上使用“method: :delete”。 【参考方案1】:

我真的想通了。

使用这个:

masonry.pkgd.js

而不是这个:

masonry.pkgd.min.js

该文件应放在 assets/javascripts 文件夹中。此外,您的 application.js 文件应如下所示:

    // This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require masonry.pkgd.js
//= require bootstrap
//= require_tree

希望有帮助!

【讨论】:

以上是关于砌体 jquery 不会在生产中呈现(Heroku)的主要内容,如果未能解决你的问题,请参考以下文章

引导程序“下拉打开”切换在开发中无法正常工作,但在生产中有效

discord bot 在生产中离线而不是在本地

Chrome 在生产中不显示 WEBP 图像

如何在将要在生产中呈现的模板中使用“dump()”twig 函数?

开发中的有效 jQuery 在生产中失败

JQuery .html() 和 .text() 在生产中返回空值