Ror cz. 6 – flash[:notice]

Często w kodzie kontrolera widać użycie flash, np.:

flash[:notice] = "Author saved"

Powoduje to wyświetlenie komunikatu dla użytkownika przy najbliższym wyświetleniu jakiejkolwiek strony. I tylko przy najbliższym, czyli komunikat pokaże się raz.

Użycie flash można dodać jako parametr do redirect_to. Czyli zamiast linii:

flash[:notice] = "Author saved"
redirect_to authors_path

Można napisać w jednej lini:

redirect_to authors_path, notice: "Author saved"

Wyświetlenie komunikatu na stronie, musi być uwzględnione w kodzie widoku. Najlepiej jak mamy to zapisane w: /views/layouts/application.html.erb. Np. tak:

<% if flash[:notice].present? %>
  <div class="alert alert-success">
    <%= flash[:notice] %>
  </div>
<% end %>

Nie jest to najlepszy kawałek do obsługi komunikatów, bo zamiast notice, możemy użyć też alert, czy nawet abc. I tu uwaga, możemy napisać:

flash[:abc] = "message"

Ale w redirect_to, możemy użyć tylko notice i alert. Żeby móc używać nasze abc w redirect_to, trzeba w /controllers/application_controller.rb dodać linię:

add_flash_types(:abc)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.