<%# Flash-based notifications %>
<% if flash[:error].present? or flash[:notice].present? %>
<div class="messages <%= flash[:error] ? 'error' : 'notice' %>">
<ul id="feedback">
<% if flash[:error].present? %>
<li><%= flash[:error] %></li>
<% end %>
<% if flash[:notice].present? %>
<li><%= flash[:notice] %></li>
<% end %>
</ul>
</div>
<% end %>
Por alguna razón, tan simple como parece, mi intento de leer desde el flash dentro de un parcial está produciendo este error, porque el flash está configurado en nil
. ¿Debo inicializarlo manualmente o algo así?¿Intenta usar la sesión flash de Rails, pero obteniendo errores nil. []?
Esto es Rails 3.1.0. El error está en la línea 2 del fragmento de código, donde intenta acceder al flash[:error]
.
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
Me debe estar faltando algo. Definitivamente no lo estoy anulando en ninguna parte.
Pensé que los ayudantes de vista podían acceder a mis parciales. Todos mis ayudantes de aplicaciones ciertamente lo son. Voy a dar una oportunidad, gracias. – d11wtq
En realidad, después de leer ese enlace, su parcial no se llama _flash ¿verdad? Si es así, cambie el nombre a literalmente cualquier otra cosa y vea si eso funciona. – Gazler
Bueno, eso ciertamente lo soluciona. Supongo que no entiendo completamente de dónde viene 'flash'. Mirando el middleware es un método en la Solicitud. Supuse que estaba expuesto como un ayudante de visualización porque es accesible para la vista :) – d11wtq