Non riesco a capire perché le mie viste delle rotaie non riconoscono il flash [: avviso] o il flash [: errore]. Continuo a ricevere il seguente errore relativo alla vista parziale in fase di rendering. L'errore specifico è:Rails flash [: notice] sempre nil
ActionView :: Template :: Error (Hai un oggetto nullo quando non ti aspettavi che Ci si sarebbero aspettati un'istanza di Array è verificato L'errore durante la valutazione nil []!..):
Nel mio controller ho
def index
@organisms = Organism.all
flash[:error] = "test"
flash[:notice] = "test"
respond_to do |format|
format.html
format.json { render :json => @organisms }
end
end
Nel mio file index.html.erb ho rendere un parziale attraverso:
<%= render "shared/flash" %>
Il partial ha il seguente codice.
<div id="flashes">
<% if flash[:notice] %>
<p id="flash_notice" class="messages notice"><%= flash[:notice] %></p>
<%= javascript_tag "$('#flash_notice').effect('highlight',{},1000);" %>
<% end %>
<% if flash[:error] || flash[:errors] %>
<p id="flash_errors" class="messages errors"><%= flash[:error] || flash[:errors] %></p>
<%= javascript_tag "$('#flash_errors').effect('highlight',{},1000);" %>
<% end %>
<% flash[:error] = flash[:errors] = flash[:notice] = nil %>
</div>
Tuttavia, se invece di rendere il parziale butto in <% = preavviso%> rende il preavviso.
Se prendo il codice parziale e lo inserisco nella parte superiore del file index.html.erb viene visualizzato correttamente. Quindi, presumo che sto rendendo la vista parziale in modo errato?
Qualsiasi aiuto è molto apprezzato. Grazie!
Stai perdendo la parte fondamentale: come si sta rendendo il parziale. Inoltre, non disinserire il flash in basso. Rails lo fa già per te. –
Grazie per le informazioni. Ho aggiunto come sto rendendo il parziale. –
Non è necessario eseguire questa operazione <% flash [: error] = flash [: errors] = flash [: notice] = nil%> –