2013-03-08 11 views
11

Ho un'app Rails con elenchi ordinabili jquery-ui. Quando l'utente trascina da una lista a un'altra il campo wostatus_id viene aggiornato. Quindi, non funziona su un aggiornamento Ajax jquery.jquery-ui ordinabile errore di ricezione - PUT 501 (non implementato)

Questo funziona bene in localhost e su Heroku. Ma sto spostando l'app su un'implementazione di Bitnami Virtual Server + Rails. Non so se è correlato, ma sto usando node.js sul nuovo server.

Su questo nuovo server, sto ottenendo questo errore sulla console del browser:

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

enter image description here

Questo è lo script del caffè:

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

Grazie per l'aiuto!

Update1

sto ottenendo lo stesso errore quando ho trascinare un evento da un giorno ad un altro utilizzando il fullcalendar-rails vista mese.

UDPATE2

ho trovato questo "Fixing 501 codice di errore Il cliente deve specificare un tipo di richiesta valida. Anche dopo che se il server Web risponde in modo errato, il server web ha bisogno semplicemente di essere aggiornato per risolvere il problema."

Sono sicuro che la richiesta è OK - lo stesso codice è stato in esecuzione su localhost e Heroku per mesi. Quindi, deve essere qualcosa a che fare con il nuovo server virtuale che sto usando.

Il nuovo server è stack Bitnami Rails. Ha installato node.js. Sto eseguendo Apache, Passenger e PG.

Come aggiornare il server per risolvere il problema ???

Update3

Questa CoffeeScript ottiene la stessa risposta:

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

Potrebbe essere Apache fermare l'utilizzo di PUT? Forse qualche impostazione in https.conf?

UPDATE5

La stessa app funziona benissimo using sottile !!!! Quindi, cercherò di usare Nginx e Thin.

UPDATE6

non riesco a farlo funzionare. Quindi, ho intenzione di provare i server app Nginx e 5 Thin.

UPDATE7

Ora ho l'applicazione Rails in esecuzione su Nginx e 5 server sottili. Ho ancora il 501 PUT - errore jquery !!!!

Se eseguo Thin in stand-alone sulla porta 3000, funziona correttamente.

Se eseguo Thin stand-alone sulla porta 80, ottengo lo stesso errore JQUERY PUT 501.

Quindi, c'è qualcosa di sbagliato con i nostri server utilizzando la porta 80.

+0

è vicino al tuo problema? https://www.geekisp.com/forum/index.php?topic=36.0; prev_next = prev – rbinsztock

+0

Senayar, dice "I filtri di bilanciamento del carico PUT e DELETE di default". Se questo è il mio problema, sai come posso abilitarli? – Reddirt

+0

penso che il problema principale venga dal tuo apache conf. controlla se la porta utilizzata dal tuo apache non è già stata utilizzata o inoltrata correttamente? : fuser -n porta TCP – rbinsztock

risposta

4

ho trascorso quasi 2 settimane a lavorare su questo. Ho provato Apache + Passenger e Nginx + Thin.

Finisce che nessuno di questi è stata la causa. Non aveva nulla a che fare con l'installazione dell'app Rails.

Era un server di rete Pound che stava fermando PUT.

2

Controllare la parola limite della configurazione di apache.

è probabile che di default si ha qualcosa di simile da qualche parte:

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

Questa impedire al server web da accettare qualsiasi PUT o DELETE richiesta, quindi la 501 (non implementato).

UPDATE:

Quindi la cosa che avete trovato sono:

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

Questo significa solo GET, POST e sono accettati OPTIONS query (allow from all) e tutto quanto non in questo elenco (LimitExcept) è negato (Deny From All).

Se è necessaria la parola chiave PUT, aggiungerla in queste due impostazioni (Limit e LimitExcept).

Si noti che questi limiti vengono applicati solo per le directory /home/*/public_html.

+0

Ho trovato un file conf con limite https- userdir.conf. Ecco un link ad esso: https://dl.dropbox.com/u/35302780/httpd-userdir.conf Ma, non è un limite su PUT. Ancora, potrebbe essere il problema? – Reddirt

+0

@Reddirt: risposta aggiornata – regilero

+0

Ho cambiato https-userdir.conf per cercare l'elenco: https://dl.dropbox.com/u/35302780/httpd-userdir.conf Quindi ho riavviato Apache. Ma l'errore non è andato via. Passerò più tempo a cercare i file conf. – Reddirt

1

Hai provato a sintetizzare una richiesta senza l'ordinabile? Ho questo sospetto furioso che JUI sta aggiungendo elementi temporanei pazzi che formattano la tua richiesta follemente.

In alternativa, ogni volta che qualcosa funziona localmente ma non sul server, immagino che qualcosa non sia asincrono che dovrebbe essere.

Invece di eseguire una richiesta di ordinamento, disconnettere i parametri della richiesta. Hanno senso?

1

bene se il tuo server Apache è ben configurato con Virtualhost. usando gem installare passeggero e passeggero-install-apache2-module nella tua app per rotaie. Quindi ti dice cosa devi aggiungere nel tuo file httpd.conf. Di solito hai qualcosa di simile a questo.

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> 

ma consiglio di utilizzare Nginx con Passenger.

ho anche un'occhiata a questo: 501 Method Not Found error on a javascript file - change name and it then works - why?

Qui trovi un tutorial per implementare applicazione Rails con Apache: Rails 3.1 application deployment tutorial

Problemi correlati