我有一个带有 jquery-ui 可排序列表的 Rails 应用程序。当用户从一个列表拖动到另一个列表时,wostatus_id 字段会更新。因此,jquery Ajax 更新失败。
这在 localhost 和 Heroku 上运行良好。但是,我正在将该应用程序迁移到 Bitnami 虚拟服务器 + Rails 实现。我不知道是否相关,但我在新服务器上使用node.js。
在这个新服务器上,我在浏览器控制台上收到此错误:
PUT http://ndeavor.ameipro.com/workorders/2 501 (Not Implemented)
这是 CoffeeScript :
$("#sort1, #sort2, #sort3, #sort4, #sort5, #sort6, #sort7").sortable
connectWith: ".connectedSortable"
cursor: "move"
update: ->
$.post($(this).data('update-url'), $(this).sortable('serialize'))
receive: (event, ui) ->
str_id = $(ui.item).attr('id')
woid = str_id.split('_')[1]
$.update "/workorders/" + woid,
workorder:
wostatus_id: $(this).data('wostatus-id')
感谢您的帮助!
更新1
当我使用 fullcalendar-rails 月 View 将事件从一天拖到另一天时,我遇到了同样的错误。
UDPATE2
我发现了这个“修复 501 错误代码 客户端应指定有效的请求类型。即使在此之后,如果 Web 服务器响应不正确,则只需升级 Web 服务器即可解决问题。”
我确定请求没问题 - 相同的代码已经在 localhost 和 Heroku 上运行了几个月。所以,这一定与我正在使用的新虚拟服务器有关。
新服务器是 Bitnami Rails 堆栈。它已经安装了node.js。我正在运行 Apache、Passenger 和 PG。
我该如何升级服务器来解决这个问题???
更新3
这个 CoffeeScript 得到相同的响应:
updateEvent = (the_event) ->
$.update "/events/" + the_event.id,
event:
title: the_event.title,
starts_at: "" + the_event.start,
ends_at: "" + the_event.end,
description: the_event.description
更新4
Apache 会停止使用 PUT 吗?也许 https.conf 中有一些设置?
更新5
同一个应用程序使用 Thin 运行良好!!!!因此,我将尝试使用 Nginx 和 Thin。
更新6
我无法让它工作。因此,我将尝试 Nginx 和 5 个瘦应用服务器。
更新7
我现在已经在 Nginx 和 5 个 Thin 服务器上运行了 Rails 应用程序。我仍然收到 501 PUT - jquery 错误!!!!
如果我在端口 3000 上独立运行 Thin,它可以正常工作。
如果我在端口 80 上独立运行 Thin,我会收到相同的 JQUERY PUT 501 错误。
因此,我们使用端口 80 的服务器出现了问题。
最佳答案
我花了将近两周的时间来完成这个工作。我尝试过 Apache+Passenger 和 Nginx+Thin。
最终发现这些都不是原因。它与 Rails 应用程序设置无关。
这是一个 Pound 网络服务器正在停止 PUT。
关于jquery-ui 可排序获取错误 - PUT 501(未实现),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15299165/