Rails 5, как обработать ответ, чтобы показать флэш-сообщения об успехе / ошибке, если форма отправлена ​​с удаленным значением true? - PullRequest
0 голосов
/ 12 ноября 2018
  1. Rails 5, как обработать ответ, чтобы показать сообщения об успешной работе / ошибке флэш-памяти, если форма отправлена ​​с удаленным значением true?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Remote true заставляет rails отправлять форму с помощью ajax, поэтому вы можете обработать запрос на интерфейсе

$(document).ready(() =>
  function showFlash(message, color) {
    // Handle finding your flash
    // clear it, set color and message
  }
  $("#your_selector").on("ajax:success", function(event) {
    const [data, status, xhr] = Array.from(event.detail);
    showFlash(xhr.responseText, 'green');
  }).on("ajax:error", function(event) {
    showFlash('Sorry there was an error', 'green')
  })
);

С учетом вышесказанного вы можете получить намного больше фантазии, но, по крайней мере, должны дать вам кости для работы.

https://guides.rubyonrails.org/working_with_javascript_in_rails.html

0 голосов
/ 12 ноября 2018

добавьте частичное в ваше представление, я бы порекомендовал создать представление / общую папку

app / views / shared / _flash.html.erb

<div id="flash-messages">
  <% flash.each do |message_type, message| %>
    <div class="alert text-center alert-<%= flash_class_name(message_type) %> alert-dismissable mb-0">
      <span><%= message %></span>
      <button type="button"  class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
      </button>
    </div>
  <% end %>
</div>

добавьте эту строку в файл макета (в теле)

app / views / application.html.erb

<%= render 'shared/flash' %>

теперь в связанном файле вида действий

app / views / [controller] / [create / update] .js.erb

$('#flash-messages').html("<%= j render 'shared/flash' %>");

и ваше действие контроллера добавит вспышку, как это

flash.now[:notice] = 'Request was saved successfully.'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...