砌体 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)的主要内容,如果未能解决你的问题,请参考以下文章
引导程序“下拉打开”切换在开发中无法正常工作,但在生产中有效