Rails 3.2和jQuery函数在生产中不起作用
要让资产管道编译的javascript函数在生产环境中工作,我遇到了一些麻烦。它在开发中运行良好 JavascriptRails 3.2和jQuery函数在生产中不起作用,jquery,ruby-on-rails,twitter-bootstrap,ruby-on-rails-3.2,twitter-bootstrap-rails,Jquery,Ruby On Rails,Twitter Bootstrap,Ruby On Rails 3.2,Twitter Bootstrap Rails,要让资产管道编译的javascript函数在生产环境中工作,我遇到了一些麻烦。它在开发中运行良好 Javascript # app/assets/javascript/subscribe.js $(function() { $('#fat-btn').click(function() { var btn = $(this) btn.button('loading') setTimeout(function () { btn.button('reset')
# app/assets/javascript/subscribe.js
$(function() {
$('#fat-btn').click(function() {
var btn = $(this)
btn.button('loading')
setTimeout(function () {
btn.button('reset')
}, 2000)
});
});
# app/assets/javascript/application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
我的看法
# 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>
非常感谢您的帮助。谢谢在生产模式下加载页面时,您能否检查浏览器中的网络控制台?似乎有些资产尚未加载
如果是这样,那么在rails环境配置中,config.service\u static\u assets似乎设置为false(在生产模式下默认设置为false)。检查config/environments/production.rb文件。这以前发生在我身上,我调用了JQuery的多个实例。 因此:
- 确保没有调用JQuery的多个实例
- 如果您正在使用coffeescript,并且在开发过程中出现语法错误(我的例子中有额外的空格),那么一切都可以顺利进行,但在生产过程中就不会了。同样,当您预编译时,控制台的日志应该指出任何问题(如果有)
- 在开发过程中查看Firebug中是否存在任何错误
和生产 - 如果所有这些都失败了,您可以尝试清理和预编译您的资产
再说一遍
你好,4pcbr,感谢您的回复。网络控制台具有application.js中编译的功能;将subscribe.js重命名为它的controller.coffee文件有什么帮助吗?没有,没关系。你能提供更多关于你发现的错误的信息吗?在生产环境下运行dev服务器时,到底发生了什么?您看到了吗?再次感谢您的时间和对我的耐心。感谢您的反馈,非常感谢您的时间。
::ActiveSupport::Deprecation.silenced = true
config.assets.compile = ['*.js', '*.css']
config.active_support.deprecation = :silence
config.assets.enabled = true
config.assets.initialize_on_precompile = false