Создаю форму таким образом:
= form_for Review.new do |f|
= react_component "Popups/ReviewPopup", {name: "review-popup"}
Внутри Popups/ReviewPopup у меня поля формы с нужными name.
И при клике на сабмит происходит:
<button
onClick={e => {
onClick(e);
e.preventDefault();
}}
className="button popup-footer__button"
>
Отправить
</button>
После чего, без перезагрузки, должны отправляться данные из формы и показаться сообщение в браузере.
В общем-то при обычной отправке (если закомментировать onClick(e); e.preventDefault();) все работает прекрасно. Но не совсем понятно как реализовывать remote: true. Причем хотелось бы реализовать именно поведение remote: true, а не отлавливать при клике данные из полей и отправлять их с помощью axios на сервер.
remote: true просто добавляет data-remote в форму. А jquery rails добавляет ajax к формам (и ссылкам), где есть data-remote.
На мой взгляд лучше воспользоваться возможностями react и попробовать реализовать функционал через axios.
Но если очень хочется, то можно добавить библиотеку rails-ujs.
import Rails from 'rails-ujs';
И для отправки формы:
Rails.fire("my_element", 'submit');
Вот тут может быть более подробно описано.
Продвижение своими сайтами как стратегия роста и независимости