0

我在让资产管道编译的 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 .

任何帮助都非常感谢。谢谢

4

3 回答 3

1

这发生在我之前,就我而言,我正在调用多个 JQuery 实例。所以:

  • 确保您没有调用多个 JQuery 实例。

  • 如果您使用的是coffeescript并且在开发中出现语法错误(我的情况下有额外的空格),一切都可以顺利进行,但在生产中它不会。同样,预编译时的控制台日志应该指出任何问题(如果有的话)。

  • 在开发
    和生产
    的时候看看Firebug有没有错误。

  • 如果一切都失败了,您可以尝试再次清理和预编译您的资产

于 2013-04-22T09:39:09.993 回答
1

请检查错误

嗨伙计,请在部署到生产模式之前对文件进行以下更改

------环境.rb-----

::ActiveSupport::Deprecation.silenced = true

------生产.rb-----

config.assets.compile = ['*.js', '*.css']
config.active_support.deprecation = :silence

--------application.rb--------

config.assets.enabled = true
config.assets.initialize_on_precompile = false
于 2013-04-22T10:50:32.067 回答
0

您可以在生产模式下加载页面时在浏览器中检查网络控制台吗?似乎某些资产尚未加载。

如果是这样,它看起来像 config.serve_static_assets 在您的 rails 环境配置中设置为 false(默认情况下在生产模式下)。检查 config/environments/production.rb 文件。

于 2013-04-22T07:58:08.620 回答