У меня есть кнопка сделал вот так, что обновляет мой Lead
объект штраф на месте:Rails: Heroku не понимает: patch /: поместить запросы?
<%= link_to status.to_s.titlecase, lead_path(@lead, lead: { status: status }), method: :patch, class: 'dropdown-item' %>
Но удаленно (на Heroku) ничего не происходит. Там нет ничего полезного в журнале:
2016-11-15T17:23:45.013893+00:00 heroku[router]: at=info method=GET path="/leads/2562?lead%5Bstatus%5D=contact_established" host=app.herokuapp.com request_id=57e8b4e9-7a61-4b86-85eb-8f68f1fedd43 fwd="IP" dyno=web.1 connect=1ms service=44ms status=200 bytes=9678
2016-11-15T17:23:44.972753+00:00 app[web.1]: [57e8b4e9-7a61-4b86-85eb-8f68f1fedd43] Started GET "/leads/2562?lead%5Bstatus%5D=contact_established" for IP at 2016-11-15 17:23:44 +0000
2016-11-15T17:23:44.974230+00:00 app[web.1]: [57e8b4e9-7a61-4b86-85eb-8f68f1fedd43] Processing by LeadsController#show as HTML
2016-11-15T17:23:44.974316+00:00 app[web.1]: [57e8b4e9-7a61-4b86-85eb-8f68f1fedd43] Parameters: {"lead"=>{"status"=>"contact_established"}, "id"=>"2562"}
2016-11-15T17:23:44.988214+00:00 app[web.1]: [57e8b4e9-7a61-4b86-85eb-8f68f1fedd43] [1m[36mUser Load (11.5ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2[0m [["id", 1], ["LIMIT", 1]]
2016-11-15T17:23:44.990722+00:00 app[web.1]: [57e8b4e9-7a61-4b86-85eb-8f68f1fedd43] [1m[36mLead Load (1.0ms)[0m [1m[34mSELECT "leads".* FROM "leads" WHERE "leads"."id" = $1 LIMIT $2[0m [["id", 2562], ["LIMIT", 1]]
2016-11-15T17:23:44.992582+00:00 app[web.1]: [57e8b4e9-7a61-4b86-85eb-8f68f1fedd43] Rendering leads/show.html.erb within layouts/application
2016-11-15T17:23:45.007497+00:00 app[web.1]: [57e8b4e9-7a61-4b86-85eb-8f68f1fedd43] Rendered leads/show.html.erb within layouts/application (14.7ms)
2016-11-15T17:23:45.009303+00:00 app[web.1]: [57e8b4e9-7a61-4b86-85eb-8f68f1fedd43] Completed 200 OK in 35ms (Views: 17.2ms | ActiveRecord: 12.6ms)
сообщение Нет ошибки возвращается в flash
, ничего. Я изменил метод между :patch
и :put
, все еще ничего.
Что мне не хватает? Почему этот link_to
обновит запись локально и ничего не сделает на Heroku?
Update
Пробовал обычай маршрут ради Heroku в:
resources :leads do
member do
patch 'update', to: 'leads#update', as: :update
end
end
И изменил мою ссылку, чтобы использовать новый путь:
<%= link_to status.to_s.titlecase, update_lead_path(@lead, lead: { status: status }), method: :patch, class: 'dropdown-item' %>
Работы на месте, и я получаю страница не найдена ошибка на Heroku.
В чем дело?
Похоже, что это обрабатывает его как запрос 'get' и вообще не затрагивает обновление. Запишите что-нибудь в действии обновления, чтобы убедиться, что вы туда попали. – toddmetheny
Ваш идентификатор также находится вне 'lead'. Поэтому, если вы посмотрите его на 'params [: id]', вам нужно посмотреть статус с помощью параметра params ['lead'] ['status'] '..., который выглядит немного смешно для меня. Я бы либо пропустил все внутри «свинца», либо все снаружи. – toddmetheny
Это просто поражает запрос на получение, да. Я полагаю, что Heroku не поддерживает HTTP-глагол в ссылке? Это что-то странное, похожее на это. Я мог просто выполнять пользовательские маршруты, но на самом деле я этого не хочу. –