Подтвердить что ты не робот

Ошибка сортировки jquery-ui - PUT 501 (не реализовано)

У меня есть приложение Rails с отсортированными списками jquery-ui. Когда пользователь перетаскивает из одного списка в другой, поле wostatus_id обновляется. Таким образом, он не работает при обновлении jquery Ajax.

Это отлично работает в localhost и на Heroku. Но я перемещаю приложение в реализацию Bitnami Virtual Server + Rails. Я не знаю, связано ли это, но я использую node.js на новом сервере.

На этом новом сервере я получаю эту ошибку в консоли браузера:

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

enter image description here

Это кофе script:

  $("#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-rails.

UDPATE2

Я нашел этот код ошибки "Fixing 501" Клиент должен указать действительный тип запроса. Даже после этого, если веб-сервер отвечает неправильно, то веб-сервер просто нуждается в обновлении для исправления проблемы.

Я уверен, что запрос в порядке - тот же код работает на localhost и Heroku в течение нескольких месяцев. Таким образом, это должно быть чем-то связано с новым виртуальным сервером, который я использую.

Новый сервер представляет собой стек Bitnami Rails. Он имеет node.js. Я запускаю Apache, Passenger и PG.

Как мне обновить сервер, чтобы устранить проблему?

Update3

Этот кофейник получает тот же ответ:

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

То же приложение работает отлично, используя Thin!!!! Итак, я попытаюсь использовать Nginx и Thin.

UPDATE6

Я не могу заставить его работать. Итак, я собираюсь попробовать Nginx и 5 Thin серверов приложений.

UPDATE7

Теперь у меня есть приложение Rails, работающее на Nginx и 5 Thin серверах. Я все еще получаю ошибку 501 PUT - jquery!!!!

Если я запускаю Thin в автономном режиме на порте 3000, он отлично работает.

Если я запускаю Thin stand-alone на порт 80, я получаю ту же ошибку JQUERY PUT 501.

Итак, что-то не так с нашими серверами, использующими порт 80.

4b9b3361

Ответ 1

Я потратил почти 2 недели на это. Я пробовал Apache + Passenger и Nginx + Thin.

В конце концов, это не причина. Это не имело никакого отношения к настройке приложения Rails.

Это был сетевой сервер Pound, который останавливал PUT.

Ответ 2

Проверьте ключевое слово Limit в настройках apache.

есть вероятность, что по умолчанию у вас есть что-то вроде этого:

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

Это не позволяет веб-серверу принимать любые запросы PUT или DELETE, поэтому 501 (не реализовано).

UPDATE:

Итак, вы обнаружили:

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

Это означает, что принимаются только запросы GET, POST и OPTIONS (allow from all), а все, что не в этом списке (LimitExcept), отклонено (Deny From All).

Если вам нужно ключевое слово PUT, добавьте его в тезисы двух настроек (Limit и LimitExcept).

Обратите внимание, что эти ограничения применяются только для каталогов /home/*/public_html.

Ответ 3

Вы пробовали синтезировать запрос без сортировки? У меня есть это подозрительное подозрение, что JUI добавляет безумные временные элементы, которые форматируют ваш запрос безумно.

Альтернативно, всякий раз, когда что-то работает локально, но не на сервере, я считаю, что что-то не является асинхронным, что должно быть.

Вместо запроса на сортировку выйдите из параметров запроса. Имеют ли они смысл?

Ответ 4

хорошо, если ваш сервер apache настроен с помощью Virtualhost. используя gem install пассажирский и пассажирский-install-apache2-module в ваше приложение rails. Поэтому он рассказывает вам, что вам нужно добавить в файл 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 с Пассажиром.

Я также смотрю на это: 501 Ошибка метода не найдена в файле javascript - измените имя, а затем он работает - почему?

Здесь вы можете найти учебное пособие по развертыванию приложения Rails с Apache: Учебник по развертыванию Rails 3.1