1

フラッシュの通知(緑の背景)とは異なる方法でフラッシュエラー(赤の背景)のスタイルを設定しようとしています。ただし、application.html.erbのレイアウトでこれを実行しようとしています。これにより、すべてのフラッシュを一度に処理できるため、インスタンス変数がなくなります。ただし、適切な変数を見つけるのに問題があります。これは私の現在のapplication.html.erbです:

<!DOCTYPE html>
<html>
<head>
  <title><%= complete_title(yield(:title)) %></title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body class="clearfix">
    <div class="bigwrapper">


    <%= render 'layouts/header' %>

    #I want to figure out how to split this part up into flash[:notice].each and flash[:error].each so I can style them separately
    <% flash.each do |key, value| %>
        <%= content_tag(:div, value, class: "alert alert-#{key}") %>
    <% end %>

        <%= yield %>

    <%= render 'layouts/footer' %>
    </div>
</body>
</html>

これは、flash [:error]を使用するサンプルセッションコントローラーです。

class SessionsController < ApplicationController

def new
end

def create
    user = User.find_by_email(params[:session][:email])
    if user && (!params[:session][:email].blank?) && user.authenticate(params[:session][:password])
    if params[:remember_me]
      cookies.permanent[:remember_token] = user.remember_token
    else
      cookies[:remember_token] = user.remember_token
    end
      sign_in user
      redirect_to user_path(user)
    else
      flash.now[:error] = "Invalid email and/or password."
      render 'new'
    end
end

def destroy
    sign_out
    redirect_to root_url
end

終わり

4

1 に答える 1

1

正確には何が問題ですか?フラッシュの種類に応じて異なるクラス名でフラッシュdivを作成しているため、すでに個別にスタイルを設定できます。

class: "alert alert-#{key}"

いくつかのcssを追加するだけです:

.alert-error { background: red; }
.alert-notice { background: green; }
于 2012-10-21T23:54:55.740 に答える