Здесь вам нужны две разные вещи.
- Отправка изменений в бэкэнд без перезагрузки страницы.
- Обновление кнопки публикации на интерфейсекогда происходит внутреннее изменение.
(приведенный ниже код является просто примером кода - он понадобится вам для вашей текущей настройки)
Я бы справился с этим, сделав "Кнопка «Опубликовать» remote: true
.Возможно, ваша ссылка выглядит следующим образом:
<%= link_to “Publish”, product_path(product_id: product.id), class: "publish", remote: true %>
remote: true
сделает этот запрос AJAX.
В вашем javascript вы захотите следить за успешным запросом ajax и выполнять какое-либо действие после его успешного завершения.
$(‘.publish a’).on (‘ajax:success’, updatePublishBtn)
function updatePublishBtn(event, data) {
$(‘.publish a’).text("Unpublish");
}
Примерно так будет искать ссылку с классомиз publish
и обновит текст до «Отменить публикацию», когда получит успешный ответ Ajax.В действительности вы, вероятно, захотите, чтобы ваш javascript скрывал кнопку публикации и показывал кнопку отмены публикации (которая работала бы так же), поскольку нажатие кнопки «Отменить публикацию» должно привести к другому маршруту ...
Это дастВы - общая идея, но вам нужно будет заполнить специфику на основе вашего варианта использования (или предоставить код в своем ответе, чтобы я мог быть более конкретным).