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