web-dev-qa-db-ja.com

ruby on Rails flash messages-:alert:error:notice and:success?

いくつかのコントローラーで、リダイレクト/フラッシュメッセージがあります

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

ただし、セッションコントローラーでは、認証が成功すると、flash [:success] = "welcome!"が表示されます。ユーザーへのリダイレクト

私は他のコントローラーで:success => "yay!"のようなことをできるようにしたいです。

これは主に化粧/一貫性を目的としていますが、:notice、:alert、:errorのみが利用可能なフラッシュタイプです/追加のタイプを追加できますか?私は理にかなっていますか?

ありがとう!

27
Chip

私は変更なしで信じています、これはあなたが得ると同じくらい近いです:

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

フレンドリーなフラッシュ構文の追加に関する 追加の注意 を次に示します。

53
tlbrack

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-201

10
luigi7up

bootstrap alert(成功と警告)に基づいて異なるタイプのフラッシュメッセージスタイルにアクセスする場合、コントローラーで:

flash[:success] = "This works!"

そして、あなたのレイアウト(おそらくapplication.html.erb)

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

警告およびその他のbootstrapアラートスタイル。

0
Guillaume Bihet