Подтвердить что ты не робот

Как определить флеш-оповещения с помощью Twitter Bootstrap Rails gem

Я пытаюсь установить флеш-уведомления в контроллере, но похоже, что я могу только определить: уведомление. Когда я пытаюсь определить: ошибки или флэш [: ошибки], я получил кучу ошибок. В настоящее время я работаю, но все сообщения, очевидно, являются типом уведомления, а не ошибкой или предупреждением. Я хочу знать, как установить ошибку или предупреждение вместо уведомления. Я использую рельсы 3.2 и твитер-бутстрап-рельсы gem

в application.html.erb

<%= bootstrap_flash %>

in 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
4b9b3361

Ответ 1

Вы используете flash-помощник из seyhunak twitter-bootstrap-rails gem. Вместо использования помощника вы можете самостоятельно настроить код и посмотреть, как все работает.

Здесь, как я установил флеш-сообщения Rails с помощью Boostrap Twitter.

Rails использует: уведомление и: предупреждение как клавиши флэш-сообщения. Twitter Bootstrap предоставляет базовый класс .alert с дополнительными классами .alert-success и .alert-error (см. Документацию Bootstrap при оповещениях). Для получения сообщения "Уведомление" Rails необходимо разбить синтаксический разбор, чтобы стиль стиля "alert-success" Twitter-Bootstrap. Любое другое сообщение, в том числе сообщение "alert" Rails, будет оформлено с помощью стиля "alert-error" Twitter Bootstrap.

По умолчанию Twitter Bootstrap применяет зеленый фон для успеха .alert-success и красного фона для .alert-error. Twitter Bootstrap предоставляет третий класс .alert-info с синим фоном. С небольшим взломом можно создать флеш-сообщение Rails с настраиваемым именем, например: info, которое будет отображаться с классом Bootstrap.alert-info. Тем не менее, его разумно придерживаться соглашения Rails об использовании только "предупреждения" и "уведомления". В более ранних версиях 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 %>

И пример установки двух разных флэш-сообщений в контроллере:

class VisitorsController < ApplicationController

  def new
    flash[:notice] = 'Welcome!'
    flash[:alert] = 'My birthday is soon.'
  end

end

Этот пример исходит из углубленной статьи, которую я написал:

Twitter Bootstrap и Rails

Для альтернативы, в которой используются четыре разных типа флеш-сообщений (успех, ошибка, предупреждение, уведомление), см. пример Rails Flash Messages с использованием Twitter Bootstrap.