Rails 3.2和jQuery功能在生产中不起作用

时间:2013-04-22 06:50:35

标签: jquery ruby-on-rails twitter-bootstrap ruby-on-rails-3.2 twitter-bootstrap-rails

我在使用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 .

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

3 个答案:

答案 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文件。