【问题标题】:Rails 3.1 remote requests submitting twiceRails 3.1远程请求提交两次
【发布时间】:2011-12-05 00:14:28
【问题描述】:

我开发了一个 Rails 3.1 应用程序,它包含一个 100% 的 Ajax CRUD 表单来输入用户和客户。我创建了两个单独的模型、控制器、视图等。每个模型的视图都包含用于创建、编辑更新和销毁的 jquery 文件。问题是当我执行任何执行远程操作的操作时,它会被调用两次。我可以在 firebug 的控制台视图以及 WEBrick 输出中的输出中确认这种情况。任何人都可以协助追踪这里发生的事情吗?什么会导致 Rails 处理每个调用两次?

【问题讨论】:

  • 一些代码将有助于更好地理解视角......例如发布被调用两次的代码
  • 这是一种预感 - 您的 JavaScript 代码或 jquery-rails 是否两次包含在页面中?如果您进行了任何预编译,请检查 public/assets 文件夹。
  • @Anurag 这就是我认为正在发生的事情。在这开始发生之前,我运行了“bundle exec rake assets:precompile”。我只需要删除那个文件吗?
  • 您应该只为生产进行预编译。如果您处于开发模式,则从公共/资产中删除所有内容。在我目前的项目中,我多次遇到同样的问题,我学到了很多:)
  • @Anurag 谢谢!!!你是神!

标签: jquery ruby-on-rails-3.1 crud asset-pipeline


【解决方案1】:

config.serve_static_assets = false 添加到development.rb 将阻止从/public/assets 加载文件。

实际上我需要在本地进行预编译,因为我的测试模式只使用来自/public/assets 的静态资产 - 测试正在捕捉可能的生产资产问题。如何?只需在test.rb 配置中设置config.assets.compile = falseconfig.serve_static_assets = true

【讨论】:

  • 从 Rails 4 开始,config.serve_static_assets 已被弃用。请改用config.serve_static_files
【解决方案2】:

如果您已预编译资产并在开发模式下运行,则 JavaScript 将在页面上包含两次。

如果处于开发模式,请从 public/assets 中删除所有内容。

【讨论】:

  • 我尝试遵循您的解决方案(即完全删除公共/资产路径并重新启动我的服务器),但我仍然得到问题中解释的问题。我是不是忘了做点什么?
  • 这是一个缓存问题。重置浏览器缓存。在我弄清楚之前发生在我身上
  • 你知道有一个 rake 命令可以做到这一点吗?只需在终端中写入:rake assets:clean。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
相关资源
最近更新 更多