1

我建立了一个小型站点作为学习练习并尝试使用 RoR。我对针对 WEBrick 运行“开发”的结果感到满意,但是在将站点移动到通过 apache 服务的“生产”时遇到了问题(所以我可以把它留在身边回顾)。

我已经尝试了一些我发现的小调整,但似乎没有任何问题可以解决这个问题——在我编译我的资产之后,JavaScript 停止工作——我的自定义小 jQuery 和内置的引导程序(下拉菜单)都不再有效。基本 HTML 正确呈现。我确实在 Chrome 开发人员工具中可见的“application.js”中出现了一个错误。我觉得这可能是问题所在,但我还没有深入研究“资产管道”来抓住它。

谁能发现我可能出错的地方?

以下是一些详细信息,如果需要,我们很乐意提供更多信息。很想把这个确定下来。

运行预编译的结果:

$ bundle exec rake assets:precompile RAILS_ENV=production
Ignoring `ruby` directive. This is a feature added to Bundler 1.2.0 and higher. Please upgrade if you would like to use it.

/usr/bin/ruby1.9.1 /usr/local/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
$

宝石文件:

source 'https://rubygems.org'
ruby '1.9.1'
gem 'rails', '3.2.8'
gem 'mysql2'
gem 'json'
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'therubyracer', :platforms => :ruby
  gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'bootstrap-sass', '~> 2.2.2.0'
gem 'simple_form'
gem 'bcrypt-ruby', '~> 3.0.0'

应用程序/资产/javascripts/application.js:

//= require bootstrap
//= require jquery
//= require jquery_ujs
//= require_tree .

app/assets/javascripts/rootEffects.js(我的一些随机 jQuery):

$(document).ready(function(){
  //Tooltips for gifts
  $('.edit').tooltip({'placement':'top'});
  $('.delete').tooltip({'placement':'top'});
  $('.tip-info').tooltip({'placement':'top'});
  $('.link-buy').tooltip({'placement':'bottom'});
  $('.long-name').tooltip({'placement':'top'});
});

将提供 public/assets/ 的内容,但不确定这是否有帮助。

这是我通过 Chrome 开发工具看到的错误。我忽略了控制台上的第二个错误,因为这是与 Chrome 相关的。

控制台错误

如果我从控制台单击,以下是显示的错误。我强烈认为这是相关的。

JavaScript 错误

根据我的阅读和理解 - 预编译过程应该将我所有的 JavaScript 放在一个文件“application.js”中 - 可能引发的错误正在停止执行任何它。到目前为止,我还没有找到一个调整来纠正这个问题,所以我正在寻求帮助。

4

2 回答 2

1

尴尬的。

我一定是偶然在不同的目录中使用了我的 application.js。

我再次转移了条目,瞧它起作用了(类似于这个问题JQuery Working in Development,Not Production on Heroku Cedar

最终应用程序.js:

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
于 2013-04-30T11:11:57.373 回答
0

如果您的 JavaScript 无法正常工作,请在 production.rb 文件中添加以下行

config.assets.compile = ['*.js', '*.css']
于 2013-04-30T11:12:08.260 回答