コントローラでフラッシュ通知を設定しようとしていますが、:noticeしか定義できないようです。 :errorsまたはflash [:errors]を定義しようとすると、たくさんのエラーが発生します。私は現在これを機能させていますが、すべてのメッセージは明らかに通知タイプであり、エラーや警告ではありません。通知の代わりにエラーや警告を設定する方法を知りたいのですが。私はRails 3.2とTwitter bootstrap Rails gemを使用しています
application.html.erb内
<%= bootstrap_flash %>
manuals_controller.rb
class ManualsController < ApplicationController
def create
respond_to do |format|
format.html { redirect_to root_url, notice:'MyManual was successfully created.' }
end
end
end
Seyhunakの Twitter-bootstrap-Rails gemのフラッシュヘルパーを使用しています。ヘルパーを使用する代わりに、自分でコードを設定して、すべてがどのように機能するかを確認できます。
これが私がRails Twitter Boostrapでフラッシュメッセージを設定する方法です。
Railsは:noticeと:alertをフラッシュメッセージキーとして使用します。 Twitter Bootstrapは、基本クラス.alertに追加のクラス.alert-successおよび.alert-errorを提供します(アラートに関するBootstrapドキュメントを参照)。 Rails「notice」メッセージをTwitter Bootstrap“ alert-success”スタイルでスタイル設定するには、解析が必要です。a=を含むその他のメッセージRails“ alert”メッセージ、Twitter Bootstrap“ alert-error”スタイルでスタイル設定されます。
デフォルトでは、Twitter Bootstrapは.alert-successに緑色の背景を適用し、.alert-errorに赤色の背景を適用します。TwitterBootstrapは3番目のクラスの.alertを提供します-背景が青色の情報。少しハッキングするだけで、Railsフラッシュメッセージを作成して、:infoなどのカスタム名を付けてBootstrap .alert-infoクラス。ただし、Rails「alert」と「notice」のみを使用するという規則に従うのが賢明です。以前のバージョンのRails「エラー」を使用しましたが、現在の慣行では「エラー」の代わりに「アラート」を使用しています。
フラッシュメッセージをアプリケーションレイアウトファイルに直接表示するコードを含めることも、パーシャルを作成することもできます。これはパーシャルの例です。
まず、アプリケーションのレイアウトには次のようなものがあります。
# app/views/layouts/application.html.erb
.
.
.
<%= render 'layouts/messages' %>
.
.
.
次に、アプリケーションレイアウトに含まれるパーシャル:
# app/views/layouts/_messages.html.erb
# Rails flash messages styled for Bootstrap 3.0
# works with Rails 4.0 or Rails 4.1
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
<div class="alert alert-<%= name.to_s == 'notice' ? 'success' : 'danger' %>">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>
また、コントローラーに2つの異なるフラッシュメッセージを設定する例:
class VisitorsController < ApplicationController
def new
flash[:notice] = 'Welcome!'
flash[:alert] = 'My birthday is soon.'
end
end
この例は、私が書いた詳細な記事からのものです。
4つの異なるフラッシュメッセージタイプ(成功、エラー、アラート、通知)に対応する代替手段については、 Twitterブートストラップを使用したRails Flashメッセージ の例を参照してください。