2013-03-08 9 views
11

Ich habe eine Rails App mit jquery-ui sortierbaren Listen. Wenn der Benutzer von einer Liste zu einer anderen zieht, wird das Feld wostatus_id aktualisiert. Also, es scheitert bei einem Jquery Ajax Update.jquery-ui sortierbar Fehler bekommen - PUT 501 (nicht implementiert)

Dies funktioniert gut in localhost und auf Heroku. Aber ich verschiebe die App auf eine Bitnami Virtual Server + Rails-Implementierung. Ich weiß nicht, ob es verwandt ist, aber ich benutze node.js auf dem neuen Server.

Auf diesem neuen Server, erhalte ich diesen Fehler in der Browser-Konsole:

PUT http://ndeavor.ameipro.com/workorders/2 501 (Not Implemented) 

enter image description here

Dies ist der Kaffee-Skript:

$("#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') 

Danke für die Hilfe!

UPDATE1

ich die gleichen Fehler, wenn ich ein Spiel von einem Tag zum anderen ziehen Ansicht, welche die fullcalendar-Schienen Monat verwenden.

UDPATE2

Ich fand das „Fixing 501 Fehlercode Der Client eine gültige Anforderung angeben sollen. Auch danach, wenn der Webserver nicht richtig reagiert, dann wird der Web-Server einfach aktualisiert werden muss das beheben Problem."

Ich bin mir sicher, dass die Anfrage in Ordnung ist - der gleiche Code läuft seit Monaten auf localhost und Heroku. Es muss also etwas mit dem neuen virtuellen Server zu tun haben, den ich benutze.

Der neue Server ist Bitnami Rails-Stack. Es hat node.js installiert. Ich betreibe Apache, Passenger und PG.

Wie würde ich den Server aktualisieren, um das Problem zu beheben ???

UPDATE3

Diese Coffee erhält die gleiche Antwort:

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 

Update4

konnte Apache die Verwendung von PUT zu stoppen sein? Vielleicht eine Einstellung in https.conf?

UPDATE5

Die gleiche Anwendung läuft gut mit Thin !!!! Also werde ich versuchen, Nginx und Thin zu verwenden.

UPDATE6

Ich kann es nicht bekommen zu arbeiten. Also werde ich Nginx und 5 Thin App Server ausprobieren.

UPDATE7

Ich habe jetzt die Rails-Anwendung auf Nginx und 5 Thin-Server ausgeführt wird. Ich bekomme immer noch die 501 PUT - jquery Fehler !!!!

Wenn ich Thin in Stand-alone auf Port 3000 laufen, funktioniert es gut.

Wenn ich Thin stand-alone auf Port 80 laufen lasse, bekomme ich den gleichen JQUERY PUT 501 Fehler.

So ist etwas falsch mit unseren Servern Port 80

+0

ist es in der Nähe Ihres Problems? https://www.geekisp.com/forum/index.php?topic=36.0; prev_next = prev – rbinsztock

+0

Senayar, es sagt "Der Load Balancer Filter PUT und DELETE standardmäßig". Wenn das mein Problem ist, weißt du, wie ich sie aktivieren kann? – Reddirt

+0

Ich denke, das Hauptproblem kommt von Ihrem Apache Conf. Überprüfen Sie, ob der von Ihrem Apache verwendete Port nicht bereits verwendet oder gut weitergeleitet wurde? : fuser -n tcp port – rbinsztock

Antwort

4

Ich verbrachte fast 2 Wochen daran gearbeitet. Ich habe versucht, Apache + Passenger und Nginx + Thin.

Es endet damit, dass keiner von denen die Ursache war. Es hatte nichts mit der Einrichtung der Rails-App zu tun.

Es war ein Pound-Netzwerkserver, der PUT stoppte.

2

prüfen Limit Schlüsselwort auf Ihrer Apache-Konfiguration verwenden.

stehen die Chancen, dass Sie standardmäßig so ähnlich irgendwo haben:

<Limit PUT DELETE> 
    order deny,allow 
    deny from all 
</Limit> 

den Webserver jede PUT oder DELETE Anfrage, so dass die 501 (nicht implementiert) Diese verhindern, dass zu akzeptieren.

UPDATE:

Also das, was Sie gefunden haben, sind:

<Limit GET POST OPTIONS> 
    Order allow,deny 
    Allow from all 
</Limit> 
<LimitExcept GET POST OPTIONS> 
    Order deny,allow 
    Deny from all 
</LimitExcept> 

Das bedeutet, nur GET, POST und OPTIONS Anfragen werden akzeptiert (allow from all) und alles, was nicht in dieser Liste (LimitExcept) wird abgelehnt (Deny From All).

Wenn Sie das Schlüsselwort PUT benötigen, fügen Sie es in diesen beiden Einstellungen hinzu (Limit und LimitExcept).

Beachten Sie, dass diese Grenzwerte nur für /home/*/public_html Verzeichnisse gelten.

+0

Ich habe eine Conf-Datei mit Limit https gefunden. userdir.conf. Hier ist ein Link dazu: https://dl.dropbox.com/u/35302780/httpd-userdir.conf Aber es ist keine Grenze für PUT. Trotzdem, könnte es das Problem sein? – Reddirt

+0

@Reddirt: Antwort aktualisiert – regilero

+0

Ich änderte die https-userdir.conf Look-Liste dies: https://dl.dropbox.com/u/35302780/httpd-userdir.conf Dann habe ich Apache neu gestartet. Aber, der Fehler ist nicht weggegangen. Ich werde mehr Zeit mit der Suche nach Conf-Dateien verbringen. – Reddirt

1

Haben Sie versucht, eine Anfrage ohne Sortierung zu synthetisieren? Ich habe den schleichenden Verdacht, dass JUI verrückte temporäre Elemente hinzufügt, die Ihre Anfrage irrsinnig formatieren.

Alternativ, wenn etwas lokal aber nicht auf dem Server funktioniert, stelle ich fest, dass etwas nicht asynchron ist, das sein sollte.

Anstatt eine Anfrage bei sort zu stellen, loggen Sie sich die Parameter der Anfrage aus. Machen sie Sinn?

1

gut, wenn Ihr Server Apache gut mit Virtualhost konfiguriert ist. Mit gem install installieren Sie Passagier und Passagier-installieren-Apache2-Modul in Ihre Schienen App. Er sagt Ihnen also, was Sie in Ihre Datei httpd.conf hinzufügen müssen. Normalerweise hast du etwas nah dran.

Listen *:80 
NameVirtualHosts *:80 


LoadModule passenger_module /somewhere/passenger-x.x.x/ext/apache2/mod_passenger.so 

PassengerRuby /usr/bin/ruby 
PassengerRoot /somewhere/passenger/x.x.x 
PassengerMaxPoolSize 10 

<VirtualHost *:80> 
    ServerName www.foo.com 
    DocumentRoot /webapps/foo/public 
    RailsBaseURI /rails 
</VirtualHost> 

aber ich rate Ihnen, Nginx mit Passagier zu verwenden.

ich auch einen Blick auf diese: 501 Method Not Found error on a javascript file - change name and it then works - why?

Hier finden Sie eine Anleitung finden Rails bereitstellen App mit Apache: Rails 3.1 application deployment tutorial

Verwandte Themen