2013-03-08 3 views
11

私はjquery-uiソート可能なリストを持つRailsアプリケーションを持っています。ユーザーがあるリストから別のリストにドラッグすると、wostatus_idフィールドが更新されます。だから、jquery Ajaxのアップデートに失敗しています。jquery-uiソート可能なエラーが発生しました - PUT 501(未実装)

これはローカルホストとHerokuで正常に動作します。しかし、私はアプリをBitnami Virtual Server + Railsの実装に移しています。私はそれが関連しているかどうかはわかりませんが、新しいサーバーでnode.jsを使用しています。この新しいサーバーで

、私は、ブラウザのコンソールにこのエラーを取得しています:

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

enter image description here

これはコーヒーのスクリプトです:助けを

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

ありがとう!

UPDATE1

私はfullcalendarレール月のビューを使用して1日から別のイベントをドラッグすると、私は同じエラーを取得しています。

UDPATE2

私は、Webサーバーは、単純に修正するためにアップグレードする必要があり、これは「クライアントが有効な要求タイプを指定する必要があります。その後も、Webサーバーが正しく応答している場合は501エラーコード を固定ました問題。"

ローカルホストとHerokuでは、同じコードが何ヶ月も実行されています。だから、私が使っている新しい仮想サーバとは何か関係があります。

新しいサーバーはBitnami Railsスタックです。これにはnode.jsがインストールされています。私はApache、Passenger、PGを実行しています。

問題を解決するためにサーバーをアップグレードするにはどうすればよいですか?

Update3と

この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 

UPDATE4

ApacheはPUTの使用を停止するだろうか?おそらくhttps.confにいくつかの設定がありますか?

UPDATE5

同じアプリが薄い使って細かい動作します!!!!ですから、NginxとThinを試してみようと思います。

UPDATE6

私はそれを動作させることはできません。ですから、NginxとThinアプリケーションサーバーを試してみましょう。

UPDATE7

は、私は今、nginxのと5台のシンのサーバ上で実行されているのRailsアプリを持っています。私はまだ501のPUT - jqueryのエラーを得る!!!!

ポート3000でスタンドアロンでThinを実行すると、正常に動作します。

ポート80でThinスタンドアロンを実行すると、同じJQUERY PUT 501エラーが発生します。

だから、何かがあなたのApacheの設定上の制限キーワードのポート80

+0

あなたの問題に近いですか? https://www.geekisp.com/forum/index.php?topic=360; prev_next = prev – rbinsztock

+0

Senayar、「ロードバランサはデフォルトでPUTとDELETEをフィルタリングします」と言っています。それが私の問題なら、どうすればそれらを有効にすることができますか? – Reddirt

+0

私は主な問題はあなたのApacheのconfから来ると思う。あなたのApacheで使用されていたポートがまだ使われていないのか、うまく転送されているのか確認してください。 :fuser -n tcp port – rbinsztock

答えて

4

私はこれに取り組んで、ほぼ2週間を過ごしました。私はApache + PassengerとNginx + Thinを試しました。

原因が原因で終わることはありません。それは、Railsアプリケーションの設定とは関係ありませんでした。

PUTを停止していたPoundネットワークサーバーでした。

2

チェックを使用して、当社のサーバーに問題があります。これ(未実装)501、

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

このいずれかのPUTを受け入れることから、Webサーバーを防止または要求を削除します。

チャンスは、デフォルトでは、あなたがどこかのようなものを持っているということです。

UPDATE:

だからあなたが発見したものは以下のとおりです。これは、

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

だけGETPOSTOPTIONSクエリが受け入れられている(allow from all)と、このリストにないもの(LimitExcept)拒否されました(Deny From All)。

PUTキーワードが必要な場合は、この2つの設定(LimitLimitExcept)に追加します。

これらの制限は/home/*/public_htmlディレクトリにのみ適用されることに注意してください。

+0

confというファイルがあります。 userdir.confここにリンクがあります:https://dl.dropbox.com/u/35302780/httpd-userdir.confただし、PUTには制限がありません。それでも問題なのでしょうか? – Reddirt

+0

@Reddirt:answer updated – regilero

+0

https-userdir.confを次のように変更しました。https://dl.dropbox.com/u/35302780/httpd-userdir.conf次にApacheを再起動しました。しかし、エラーは消えていませんでした。私はconfファイルの検索にもっと時間を費やすつもりです。 – Reddirt

1

ソート可能でないリクエストを合成しようとしましたか?私はJUIがあなたの要求を間違いなくフォーマットしているクレイジーな一時的な要素を追加しているというこの卑劣な疑いを持っています。

また、サーバ上ではなくローカルで動作するものがあれば、私は何かが非同期ではないと考えています。

ソートをリクエストする代わりに、リクエストのパラメータをログアウトします。彼らは意味をなさないでしょうか?

1

サーバーのApacheがVirtualhostでうまく構成されている場合は、 gem install passengerとpassenger-install-apache2-moduleをあなたのレールアプリに使用してください。そこで彼はファイルhttpd.confに何を追加する必要があるかを教えます。通常、これに近いものがあります。

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> 

NginxをPassengerで使用するようアドバイスします。

私もこれを見て:ここで501 Method Not Found error on a javascript file - change name and it then works - why?

あなたは、ApacheでのRailsアプリを展開するためのチュートリアルを見つけることができます:Rails 3.1 application deployment tutorial

関連する問題