web-dev-qa-db-ja.com

TwitterでFlash通知を定義する方法Bootstrap Rails gem

コントローラでフラッシュ通知を設定しようとしていますが、: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
14
barnett

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">&times;</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

この例は、私が書いた詳細な記事からのものです。

Twitter Bootstrap and Rails

4つの異なるフラッシュメッセージタイプ(成功、エラー、アラート、通知)に対応する代替手段については、 Twitterブートストラップを使用したRails Flashメッセージ の例を参照してください。

28
Daniel Kehoe