флеш-сообщения ruby ​​on rails -: alert: error: note and: success? - PullRequest
27 голосов
/ 28 сентября 2011

В некоторых из моих контроллеров у меня есть перенаправления / флеш-сообщения

redirect_to products_url, :notice => "message here", 
redirect_to states_url, :error => "oops!" etc... 

Однако в моем контроллере сессий при успешной аутентификации у меня есть flash [: success] = "welcome!"redirect_to user

Я хотел бы иметь возможность в других моих контроллерах сделать что-то вроде: success => "yay!"

Это в основном для косметических целей / целей согласованности, но:,: alert и: error только для доступных flash-типов / можно ли добавить дополнительные типы?Имею ли я смысл?

Спасибо!

Ответы [ 3 ]

53 голосов
/ 28 сентября 2011

Я думаю, без изменений, это так близко, как вы получите:

redirect_to user_path(@user), :flash => { :success => "Message" }

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

10 голосов
/ 05 апреля 2014

Я только что узнал, что в Rails 4 вы можете регистрировать пользовательские типы в контроллере приложения:

class ApplicationController
    ...
  add_flash_types :error, :another_custom_type
end

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def create
    ...
    redirect_to home_path,
      error: "An error message for the user"
  end
end

# app/views/home/index
<%= error %>

Заслуга идет к http://blog.remarkablelabs.com/2012/12/register-your-own-flash-types-rails-4-countdown-to-2013

0 голосов
/ 04 февраля 2018

Если вы хотите получить доступ к различным типам стилей флеш-сообщений на основе предупреждения при загрузке (успех и предупреждение), в вашем контроллере:

flash[:success] = "This works!"

А в вашем макете (скорее всего application.html.erb)

  <% if success.present? %>
      <p class="alert alert-success"><%= success %></p>
  <% end %>

То же самое с предупреждением и другими стилями предупреждений при загрузке.

...