【问题标题】:Jquery fileupload function not working when deployed by Rails由 Rails 部署时,Jquery 文件上传功能不起作用
【发布时间】:2016-04-06 23:27:14
【问题描述】:

我正在使用 jquery fileupload rails gem 将文件直接加载到 S3。在 localhost 中一切正常,但是当部署到 Heroku 时,fileupload 函数是未定义的。我通过更改为解决了这个问题 config.assets.debug = true 在 production.rb 中,但我想了解如何解决这个问题,以便我可以禁用此设置。资产正在部署前进行预编译。

我的 application.js 看起来像这样:

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require jquery-fileupload/basic
//= require bootstrap
//= require_self
//= require_directory
//require_tree .
//= require turbolinks
//= require jquery.fixedheadertable.min

有人有什么想法吗?

【问题讨论】:

  • 最好知道您的生产环境托管在哪里;我猜是 Heroku?
  • 这个部署在heroku上

标签: javascript jquery ruby-on-rails file-upload


【解决方案1】:

如果它正在开发中,有两个潜在问题:

  • 资产不是precompiled
  • 生产环境不支持 S3 上传

我将详细介绍这两组修复:

--

资产

如果您收到 Javascript 错误(“未知函数”等),您可能没有可供应用参考的文件/函数。

当您不预编译您的资产在推送到生产环境之前,这是一个常见的问题。使用Heroku 会自动预编译资产,“独立”环境不会:

$ rake assets:precompile RAILS_ENV=production
$ git add .
$ git commit -a -m "Precompiled Assets"
$ git push [[your_remote]]

如果你使用Capistrano(祝你好运),我认为这有一些包括预编译的食谱,虽然它很粗略。在您的控制台中使用上述代码而不推送到远程 repo 将使您能够在生产中使用预编译的资产。

--

S3

另一个可能性是您的生产环境无法与 S3 连接。您已经提到事实并非如此;对于许多想要在生产环境中访问 S3 的人,您必须设置 ENV variables 才能使其正常工作。

执行此操作的方式会根据您的生产环境而有所不同;如果你使用的是linux,你可以在etc/environment中设置变量。

【讨论】:

  • 谢谢,但我在部署 (Heroku) 之前手动预编译了资产/问题并不是真正的 s3,但 Esther 文件上传插件未定义,所以我不认为它是 thid。如果我使用 configur.assets.debug = true 设置环境变量并且一切正常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 2019-02-24
  • 2012-03-05
相关资源
最近更新 更多