我在使用Asset Pipeline编译的javascript函数在生产中工作时遇到了一些麻烦。它在开发中运作良好。
的Javascript
# app/assets/javascript/subscribe.js
$(function() {
$('#fat-btn').click(function() {
var btn = $(this)
btn.button('loading')
setTimeout(function () {
btn.button('reset')
}, 2000)
});
});
我的观点
# app/assets/subscribe.html.erb
<div class="subscribe">
<%= form_tag subscribe_path, class: "form-inline" do %>
<%= text_field_tag :email, nil, :type=>"email", :placeholder => 'Your email address' %>
<%= button_tag "Go", id: "fat-btn", class: "btn", data: { "loading-text" => "loading...", "toggle" => "button"} %>
<% end %>
</div>
我的应用程序Javascript
# app/assets/javascript/application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
任何帮助都非常感谢。谢谢
答案 0 :(得分:1)
这发生在我之前,在我的情况下,我正在调用多个JQuery实例。 所以:
确保您没有调用多个JQuery实例。
如果您正在使用coffeescript并且在开发过程中出现语法错误(我的情况下我有额外的空格),那么一切都可以顺利进行,但在生产中它不会。同样,预编译时控制台的日志应指出任何问题(如果有的话)。
当您进入开发时,查看Firebug中是否有任何错误 和生产。
如果一切都失败了,您可以尝试清理和预编译您的资产 试。
答案 1 :(得分:1)
请检查错误
您好budy请在部署到生产模式之前对文件进行以下更改
------ ----- enviorment.rb
::ActiveSupport::Deprecation.silenced = true
------ ------- Production.rb
config.assets.compile = ['*.js', '*.css']
config.active_support.deprecation = :silence
------- ------- application.rb中
config.assets.enabled = true
config.assets.initialize_on_precompile = false
答案 2 :(得分:0)
在生产模式下加载页面时,您可以检查浏览器中的网络控制台吗?似乎有些资产尚未加载。
如果是这样,看起来在rails环境配置中config.serve_static_assets设置为false(默认情况下在生产模式下)。检查config / environments / production.rb文件。