【问题标题】:Rails 3.1 precompiled assets breaking javascript remote_forms in production modeRails 3.1 预编译资产在生产模式下破坏了 javascript remote_forms
【发布时间】:2012-01-02 05:03:39
【问题描述】:

我已经修复了有关“xxx”未编译的所有错误,并且所有资产都显示了——在本地运行时一切正常:

  • 所有 ajax 请求都有效
  • 表单提交使用 Rails 远程标签并正确触发

但是,在本地(和 Heroku)以生产模式运行时:

  • 一些 ajax 可以工作 - 但是应该更新记录(并在 dev 中执行)的 PUT 之类的东西不会...它们会点击页面但不会执行实际的数据库更新
  • 远程表单被完全破坏并导致常规表单提交

源码可以从这里克隆:https://github.com/bluescripts/reru_scrum

也许我错误地编译了资产,或者我的 application.js 文件中缺少适当的包含?

我一直在编译:

rake assets:precompile

【问题讨论】:

    标签: ruby-on-rails-3 ruby-on-rails-3.1 unobtrusive-javascript


    【解决方案1】:

    您的application.js 中缺少//= require jquery_ujs。这个文件带有jquery-rails gem,除了其他东西之外还负责处理远程链接和表单。

    顺便说一句,我建议从您的存储库中删除 .Gemfile.swp 并将 .*.swp 添加到 .gitignore

    【讨论】:

    • 所以这会在生产中修复它,除了选择一个故事作为打开/关闭。但是在开发模式下,这会导致所有内容都重复发布;有什么想法吗?
    • 预编译的资产不应该在开发模式下使用。请参阅this 问题的答案。您只需从本地公共目录中删除所有预编译资产并在部署脚本中设置预编译,这样预编译资产将仅存在于生产环境中的服务器上。
    • 做到了!清除所有旧资产,然后在本地编译并推送,让它们再次正常工作。
    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 2011-12-31
    • 2011-12-20
    • 2016-10-14
    • 2013-05-08
    • 2012-05-20
    • 2014-10-31
    • 1970-01-01
    相关资源
    最近更新 更多