Сообщение не возвращается 405

У меня возникла проблема с моим локальным сервером Rails, все почтовые вызовы, которые начали возвращать метод 405, не разрешены. Однако на наших промежуточных и производственных серверах нет проблем. Это происходит во всех ветвях кода даже тех, которые не были обновлены. При отладке я вижу, что он достигает файла маршрутов, но не контроллера.

Я попытался удалить свои драгоценные камни и переустановить, переключившись с WEBrick на Pama, создав новый клон моего проекта git.

Сервер

Started POST "/assets" for ::1 at 2015-07-14 12:14:27 -0400

Вкладка "Сеть" в Chrome

Общие

Remote Address:[::1]:3000
Request URL:http://localhost:3000/assets
Request Method:POST
Status Code:405 Method Not Allowed

Ответ

HTTP/1.1 405 Method Not Allowed
Cache-Control:no-cache
Content-Length:18
Content-Type:text/plain
X-Request-Id:9b0b2dd2-065b-4610-91c9-36494ea95353
X-Runtime:0.145368

Запрос

POST /assets HTTP/1.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding:gzip, deflate
    Accept-Language:en-US,en;q=0.8
    Cache-Control:no-cache
    Connection:keep-alive
    Content-Length:8376627
    Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryx8y8PBySdt7dxs4A
    Cookie:activeAccordionGroup=collapseTwo; _fusion360_hub_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJWFlYmVlOGZjZmI3YzVlYjBjNjAyYzcyMzNhNzIyMzIwBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMTllM2xhK1k4WG1hd2xYNnZCOEtHOEhPaHNTbWQvZGR2cGJ3bU9WUXIwRzg9BjsARg%3D%3D--4e108cb5f6eca3d986c0b3accec07bd2c27560b2; _mkto_trk=id:760-CWR-293&token:_mch-localhost-1435859445290-79614; _pk_id.845225.1fff=9847e7981c291a08.1435859445.1.1435859445.1435859445.; _allegorithmic-substance-marketplace_session=M3dMUCs4ZEtWSTFJTFVHV2VYN2pESFdHcGlHL2grVVVKSGxIWEZ3MlhXQkpRdHE2L0ZkMFpURmZDWGl6aTMxYSttMXFSQXN2M08zVVVXZTRHMDNKOHJOUzA1TmZoYnMwWURjb3c0Rkx6MTJYOW1Uem9aNGRObEMvc1NpSWo5VnQ4dUIzRnRtTFpnMlpOQVVZUU1SdWxiN1ZjN1lIMVd3Sk5jaXkyZkZLZ3duWTc4K2dnK0FSK29JVWdva2t0eUN1Q3hJbjFERHJVaGtndjVoWGxDRUlndz09LS1rZDdWcmtEWHlJWHRpZjc1MFNUSDF3PT0%3D--d34962721f449064dfdfd4629c0239ea1340aee4; __profilin=p%3Dt
    Host:localhost:3000
    Origin:http://localhost:3000
    Pragma:no-cache
    Referer:http://localhost:3000/assets/new
    User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36

Ответ 1

У вас есть маршрут "активы", который является зарезервированным маршрутом в Rails и зарезервирован для Rails Asset Pipeline.

Если вы должны использовать маршрут "активы", вам необходимо предоставить другой точке монтирования Asset Pipeline, добавив следующую строку в development.rb или production.rb блок конфигурации:

config.assets.prefix = '/assetz'

И перезагрузите сервер.

Таким образом, все ваши активы будут установлены на "/assetz", и вы сможете использовать запросы POST на "/assets".

Счастливое кодирование!

Ссылка:

1) fooobar.com/questions/553503/...

Ответ 2

Не могли бы вы разместить свой файл маршрутов, а также точную версию rails вашей dev-среды и производственных серверов?

Я предполагаю, что это может произойти, когда вы отправляете сообщение на маршрут, который зарегистрирован только как запрос на получение (в зависимости от версии вашей рельсы) или, возможно, маршруты, которые определены дважды, например:

resources :photos, :only => [:index]
get :photos