Rails: изменение метода формы на PATCH в javascript отправляет запрос GET при отправке формы - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть форма, которая по умолчанию является POST.При изменении раскрывающегося списка я хочу изменить метод формы на PATCH и его действие на что-то другое и отправить форму.

erb:

<%= form_for @booking, :url => admin_events_bookings_path, :html => { :class => 'smart-form', :id => 'mainForm', :data => { :change_event_path => change_event_admin_events_bookings_path } } do |f| %>
...
<% end %>

HTML (отображается):

<form class="smart-form" id="mainForm" data-change-event-path="/admin/events/bookings/change_event" action="/admin/events/bookings" accept-charset="UTF-8" method="post" novalidate="novalidate"><input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token" value="oC9bO0GVnMuc4UFnJLKDbTvaWEPLCKycmrsTJGWcHyYZ2QrYsVzbvP1pmMmqF/LIT3BepGCTWhZ0YZyPGsJUPg==">
...
</form>

JS:

$('#booking_event_id').on('change', function(ev) {
    $('#mainForm').attr('action', $('#mainForm').data().changeEventPath) //this works, verified in browser
    $('#mainForm').attr('method', 'patch') //this works, verified in browser
    $('#mainForm')[0].submit()
})

Однако запрос, который поступает на сервер, является запросом GET.Из журнала:

Started GET "/admin/events/bookings/change_event?utf8=%E2%9C%93&authenticity_token=oizowirdfSiR%2BiUGIsZWe8PHSypUAItFK8Y39gwNtK4b2rkh2hQ6X%2FBy%2FKisYyfet21Nzf%2Bbfc%2FFHLhdc1P%2Ftg%3D%3D&ticket_type=priced&booking%5Bevent_id%5D=2"

Почему форма отправляется как GET-запрос?Как я могу сделать эту работу?

1 Ответ

0 голосов
/ 26 декабря 2018

Согласно Rails docs :

Если глагол не GET или POST, которые изначально поддерживаются HTML-формами, форма будет установлена ​​в POST и скрытаввод с именем _method будет содержать предназначенный для глагола глагол для интерпретации.

Таким образом, чтобы изменить глагол, вам нужно только добавить скрытое поле в форму с именем _method с помощьюзначение патч или положить :

<input type="hidden" name="_method" value="patch">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...