Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript没有在带有rails 3.1的heroku上运行_Javascript_Ruby On Rails 3_Heroku_Ruby On Rails 3.1 - Fatal编程技术网

javascript没有在带有rails 3.1的heroku上运行

javascript没有在带有rails 3.1的heroku上运行,javascript,ruby-on-rails-3,heroku,ruby-on-rails-3.1,Javascript,Ruby On Rails 3,Heroku,Ruby On Rails 3.1,我已经在Heroku上将rails 3.0应用程序迁移到3.1。它运行在cedar堆栈上,除了应用程序的javascript无法运行外,一切都很好。application.js文件已编译,看起来与应该的一样。可以访问myapp.com/assets/application.js。它就是跑不动 如果我在本地运行这个应用程序,javascript就可以工作,所以我怀疑一定有一些简单的配置问题没有解决。这是我的production.rb文件: FloridaBirdTrail::Application

我已经在Heroku上将rails 3.0应用程序迁移到3.1。它运行在cedar堆栈上,除了应用程序的javascript无法运行外,一切都很好。application.js文件已编译,看起来与应该的一样。可以访问myapp.com/assets/application.js。它就是跑不动

如果我在本地运行这个应用程序,javascript就可以工作,所以我怀疑一定有一些简单的配置问题没有解决。这是我的production.rb文件:

FloridaBirdTrail::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb

  # Code is not reloaded between requests
  config.cache_classes = true

  # Full error reports are disabled and caching is turned on
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  # Disable Rails's static asset server (Apache or nginx will already do this)
  config.serve_static_assets = true

  # Compress JavaScripts and CSS
  config.assets.compress = true

  # Send deprecation notices to registered listeners
  config.active_support.deprecation = :notify
end
编辑


将production.rb的内容替换为development.rb的内容至少允许我的一些javascript运行(出于某种原因,gmap3无法工作)。但是,哪种设置起作用呢?

您确定要将Heroku切换到Cedar堆栈吗?这里有一些升级文档


打开您的
应用程序.rb
文件,并确保您的
捆绑机
require语句如下所示:

Bundler.require *Rails.groups(:assets)
默认情况下,它看起来像

# If you precompile assets before deploying to production, use this line
Bundler.require *Rails.groups(:assets => %w(development test))
# If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env)

我遇到了一些Javascript问题(Heroku上的服务器端,本地一切正常),当我 *将我所有的Javascript移到一个单独的文件中,而不是application.js
*从application.js中删除了require_tree,取而代之的是按名称调用我想要的每个javascript
*已从我的app/assets/javascript文件夹中删除bootstrap.js


我的猜测是编译在某种程度上把事情搞砸了。

手动预编译对我来说很有效


bundle exec rake资产:在推送到heroku之前进行预编译

我希望您在最近一次Heroku推送之前对资产进行了本地预编译(如上面一个回复中所建议的)。
请检查您的系统是否阻止JavaScripts的执行。为此,在使用Heroku应用程序时打开控制台,并检查是否存在异常。如果您看到与JavaScripts相关的异常被阻止,这可能就是问题所在。在我的例子中,同样的情况也发生了,不幸的是,我无法对此采取任何措施,因为我没有管理员权限。

嗨,谢谢,但我在cedar上。我已经看过Heroku的文档好几次了,但是没有找到任何关于为什么我的javascript没有运行的线索。你还做了哪些调试?如果在application.js中放置一个alert(),它会触发吗?当您访问myapp.com时,是否包含javascript?Firebug是否验证对资产的请求是否成功?javascript包含在标题中,我可以转到该资产并查看它,它与我在本地运行应用程序并且javascript工作时的情况相同。插入alert()调用无效。我现在去问Firebug,谢谢!firebug中没有控制台错误。我也可以跟踪heroku的日志,那里也没有错误。问题一定是当我在服务器上运行它时,一些javascript正在爆炸。但为什么会这样呢?