Rails POST (патч) в разработке становится GET в производстве - PullRequest
2 голосов
/ 05 мая 2019

Та же ситуация, что и в Ссылка Rails, которая отправляет сообщения POST в процессе разработки GET в производстве , но в этом вопросе нет никаких выводов, поэтому я также пытаюсь:

  • Рельсы 5.2.3
  • Рубин 2.6
  • Запуск в контейнере Docker
  • Приложение Live находится на Ubuntu 16.04.6

У меня есть следующее на мой взгляд:

<%= link_to '&#10003;'.html_safe, item_path(item), method: :patch, :class=>"item__buy-btn" %>

Генерирует следующий HTML-код:

<a class="item__buy-btn" rel="nofollow" data-method="patch" href="/items/32">✓</a>

Это в моем контроллере предметов (у меня нет показа # предмета):

def update
  item = Item.find(params[:id])
  item.update(bought: true)
  list = List.find(item.grocery_item_id)
  receipt = Receipt.find(list.receipts.last.id)
  receipt.close
  item.update(grocery_item_id: receipt.id, grocery_item_type: receipt.class.name)
  item.save
  redirect_to request.referrer || root_url
end

А это мои пункты, связанные маршруты:

                items GET    /items(.:format)                                                                         items#index
                      POST   /items(.:format)                                                                         items#create
             new_item GET    /items/new(.:format)                                                                     items#new
            edit_item GET    /items/:id/edit(.:format)                                                                items#edit
                 item GET    /items/:id(.:format)                                                                     items#show
                      PATCH  /items/:id(.:format)                                                                     items#update
                      PUT    /items/:id(.:format)                                                                     items#update
                      DELETE /items/:id(.:format)                                                                     items#destroy

Ясно, что ПОЧТА: response in development

В журнале написано PATCH:

web_1              | Started PATCH "/items/33" for 172.21.0.1 at 2019- 05-05 19:29:31 +0000
web_1              | Cannot render console from 172.21.0.1! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
web_1              | Processing by ItemsController#update as HTML
web_1              |   Parameters: {"authenticity_token"=>"KmPf0fEDEs6Y2gUmC6Su9fdeVOg51AwCUUWyQBq14Gz0Fs6IRJ5cmmQdUETMbE+IMRTTGcfQPQ86x0rNzDSRHg==", "id"=>"33"}

А потом в ПРОИЗВОДСТВЕ:

I, [2019-05-05T18:27:22.439552 #1]  INFO -- : [93c90971-1378-4e39-b6fb-8329dd46922e] Started GET "/" for 10.255.0.2 at 2019-05-05 18:27:22 +0000
I, [2019-05-05T18:27:22.440379 #1]  INFO -- : [93c90971-1378-4e39-b6fb-8329dd46922e] Processing by HomeController#index as HTML
I, [2019-05-05T18:27:22.441694 #1]  INFO -- : [93c90971-1378-4e39-b6fb-8329dd46922e]   Rendering home/index.html.erb within layouts/application
I, [2019-05-05T18:27:22.443279 #1]  INFO -- : [93c90971-1378-4e39-b6fb-8329dd46922e]   Rendered home/index.html.erb within layouts/application (1.4ms)
I, [2019-05-05T18:27:22.444679 #1]  INFO -- : [93c90971-1378-4e39-b6fb-8329dd46922e] Completed 200 OK in 4ms (Views: 3.0ms)
I, [2019-05-05T18:49:37.971732 #1]  INFO -- : [5f452d24-80c5-44dc-bd8a-cb2be0aa5f14] Started GET "/items/7" for 10.255.0.2 at 2019-05-05 18:49:37 +0000
F, [2019-05-05T18:49:37.973154 #1] FATAL -- : [5f452d24-80c5-44dc-bd8a-cb2be0aa5f14]
F, [2019-05-05T18:49:37.973209 #1] FATAL -- : [5f452d24-80c5-44dc-bd8a-cb2be0aa5f14] AbstractController::ActionNotFound (The action 'show' could not be found for ItemsController):
F, [2019-05-05T18:49:37.973237 #1] FATAL -- : [5f452d24-80c5-44dc-bd8a-cb2be0aa5f14]
F, [2019-05-05T18:49:37.973274 #1] FATAL -- : [5f452d24-80c5-44dc-bd8a-cb2be0aa5f14] actionpack (5.2.3) lib/abstract_controller/base.rb:129:in `process'

response in production

Что может вызвать такое поведение? Есть ли какая-либо соответствующая информация, которую я пропускаю в этом сообщении?

EDIT:

Согласно ответу ser tadmans, речь шла, очевидно, о javascript. Ошибка прекомпиляции из-за комментария # в одном из файлов.

1 Ответ

2 голосов
/ 05 мая 2019

Обычно это происходит из-за того, что не удалось загрузить библиотеку JavaScript Rails UJS и вводимые ею атрибуты данных игнорируются.

Убедитесь, что библиотека UJS загружена.Если вы используете Sprockets, убедитесь, что строка rails-ujs "комментарии" в application.js присутствует.

Если вы работаете в режиме production, вам необходимо убедиться, что ваши ресурсы правильно скомпилированы,Это можно сделать с помощью rake assets:precompile в месте развертывания для Rails с 3 по 5.2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...