rails instalar bootstrap ruby-on-rails ruby twitter-bootstrap ruby-on-rails-4

ruby-on-rails - instalar - sprockets-rails



rails 4-aviso de flash (3)

Todavía estoy trabajando en el sitio de demostración de mis rails 4, y estoy viendo algo extraño. En el controlador tiene una línea como esta:

format.html { redirect_to @widget, notice: ''Widget was successfully created.'' }

Esto representa un mensaje flash en la página redirigida, que se espera. Sin embargo, la clase css adjunta al mensaje div es un alert alert-notice lugar de una clase de alerta de Bootstrap válida, como alert-info .

¿Dónde se configura la clase para este flash y cómo la personalizo?

Además, si elimino un registro a través de ajax, ¿hay alguna manera de acceder al contenedor de memoria flash central para mostrar el mensaje a través de js, o tengo que mostrar / ocultar mi propio mensaje div solo para solicitudes ajax?

EDITAR: mis layouts/application.html.erb inspirados en Michael Hartl layouts/application.html.erb :

<div class="container"> <% flash.each do |key, value| %> <div class="alert alert-<%= key %>"><%= value %></div> <% end %> <%= yield %> </div>

¡Gracias!

EDICION 2:

Quizás no estaba lo suficientemente claro en mi pregunta original. Entiendo exactamente cómo se está configurando la clase en el objeto flash en este caso. Estoy interesado en aprender a usar y personalizar el notice: en el bloque format.html . Parece que debería haber una manera de aprobar una clase a través de este aviso? ¿O no es esta una forma básica de Rails de hacer las cosas?


Añadir esto a

app / controllers / application_controller.rb

class ApplicationController add_flash_types :success, :warning, :danger, :info end

y luego puedes hacer esto en tus controladores

format.html { redirect_to @widget, success: ''Widget was successfully created.'' }

siempre que lo haya hecho en sus diseños

<div class="container"> <% flash.each do |key, value| %> <div class="alert alert-<%= key %>"><%= value %></div> <% end %> <%= yield %> </div>


En application.html.erb , estarías mostrando los mensajes flash .

Actualiza ese código como abajo

<% flash.each do |name, msg| %> <%= content_tag :div, msg, class: "alert alert-info" %> <% end %>

Puede agregar las clases que desea aplicar al mensaje flash en la opción de class .

EDITAR

La clase está configurada como alert alert-notice de alert alert-<%= key %> debido a alert alert-<%= key %> en su código. Cuando llame a redirect_to @widget, notice: ''Widget was successfully created.

Se agregará un mensaje flash en flash hash con clave como notice y valor a medida que Widget was successfully created. , es decir,

flash[:notice] = "Widget was successfully created."

EDIT # 2

format.html { redirect_to @widget, notice: ''Widget was successfully created.'' }

notice: ''Widget was successfully created.'' es un argumento pasado al método redirect_to Se agrega al hash flash en este método.


Si no quiere estropear su ApplicationController como indica @Sachin Mour, puede agregar algunas clases de CSS adicionales, en consecuencia:

en la app/assets/stylesheets/custom.scss :

/*flash*/ .alert-error { background-color: #f2dede; border-color: #eed3d7; color: #b94a48; text-align: left; } .alert-alert { background-color: #f2dede; border-color: #eed3d7; color: #b94a48; text-align: left; } .alert-success { background-color: #dff0d8; border-color: #d6e9c6; color: #468847; text-align: left; } .alert-notice { background-color: #dff0d8; border-color: #d6e9c6; color: #468847; text-align: left; }

Tutorial paso a paso, cómo abordar mensajes flash con el dispositivo y el arranque, puede encontrarlo here