【发布时间】:2013-03-08 16:49:50
【问题描述】:
我有一个带有 jquery-ui 可排序列表的 Rails 应用程序。当用户从一个列表拖到另一个列表时,wostatus_id 字段会更新。所以,它在 jquery Ajax 更新上失败了。
这在 localhost 和 Heroku 上运行良好。但是,我正在将该应用程序移至 Bitnami Virtual Server + Rails 实现。我不知道它是否相关,但我在新服务器上使用 node.js。
在这台新服务器上,我在浏览器控制台上收到此错误:
PUT http://ndeavor.ameipro.com/workorders/2 501 (Not Implemented)
这是咖啡脚本:
$("#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 月视图将事件从一天拖到另一天时,我遇到了同样的错误。
UDPATE2
我发现了这个“修复 501 错误代码 客户端应指定有效的请求类型。即使在此之后,如果 Web 服务器响应不正确,则只需升级 Web 服务器即可解决问题。”
我确定请求没问题 - 相同的代码已经在 localhost 和 Heroku 上运行了几个月。所以,这一定与我正在使用的新虚拟服务器有关。
新服务器是 Bitnami Rails 堆栈。它安装了 node.js。我正在运行 Apache、Passenger 和 PG。
如何升级服务器来解决问题???
更新3
这个咖啡脚本得到相同的响应:
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 台瘦服务器上运行 Rails 应用程序。我仍然收到 501 PUT - jquery 错误!!!!
如果我在端口 3000 上独立运行 Thin,它可以正常工作。
如果我在端口 80 上单独运行 Thin,我会收到相同的 JQUERY PUT 501 错误。
所以,我们使用端口 80 的服务器出了点问题。
【问题讨论】:
-
Senayar,它说“负载均衡器默认过滤 PUT 和 DELETE”。如果这是我的问题,你知道我该如何启用它们吗?
-
我认为主要问题来自您的 apache conf。检查您的 apache 使用的端口是否尚未使用或转发良好? : fuser -n tcp 端口
-
如果我在 SSH 控制台中运行此命令 = $ fuser -n tcp port,我得到 Cannot resolve local port port: Servname not supported for ai_socktype
-
如果我在 SSH 控制台运行这个命令 = $ fuser -n tcp 80,我什么也得不到
标签: jquery ruby-on-rails apache jquery-ui