我想问一下是否可以在不使用Twitter Bootstrap的情况下更改Flash消息的外观?

这是我的观点:.index.html.erb

<form class="login-form" action="/login" id="login-form" method="post" >
  <h2 class="login-title">Sign In</h2>
  <% flash.each do |name, msg| -%>
    <%= content_tag :div, msg, class: name %>
  <% end -%>


而我的控制器如下:

  def create
    @user = User.find_by_email(params[:email])
    # If the user exists AND the password entered is correct.
    if @user && @user.authenticate(params[:password])
    # login code comes here
    else
      flash.now[:error] = 'Invalid email/password combination'
      render 'new'
    end
  end


如何在不使用Twitter Bootstrap的情况下设置错误Flash消息的样式?

先感谢您!

最佳答案

您可以简单地将一个CSS类分配给Flash消息,并为其设置适当的样式:

<% flash.each do |name, msg| %>
  <div class="custom-alert">
    <%= msg %>
  </div>
<% end %>


在您合适的样式表中:

.custom-alert {
  background-color: #d96459;
}


如果要基于闪存名称分配各种自定义警报类别,则可以定义一个帮助程序,以有条件地输出类别名称,并将其嵌入到标记中的类别名称中:

module ApplicationHelper
  def alert_class(flash_name)
    if flash_name == "success"
      return "success-class"
    elsif flash_name == "error"
      return "error-class"
    else
      return nil
    end
  end
end

# And then in your markup:

<% flash.each do |name, msg| %>
  <div class=<%= name %>>
    <%= msg %>
  </div>
<% end %>


希望这可以帮助!

10-07 21:52