我不明白爲什麼我的rails視圖不能識別flash [:notice]或flash [:error]。我不斷收到有關正在呈現的局部視圖的以下錯誤。具體的錯誤是:Rails flash [:notice] always nil
ActionView :: Template :: Error(你沒有對象,當你沒有料到它! 你可能已經期待一個Array的實例 評估nil時出錯。 ):
在我的控制器我有
def index
@organisms = Organism.all
flash[:error] = "test"
flash[:notice] = "test"
respond_to do |format|
format.html
format.json { render :json => @organisms }
end
end
在我的index.html.erb文件I呈現出的部分通過:
<%= render "shared/flash" %>
該部分具有以下代碼。
<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>
然而,如果代替使該部分I中<%扔=通知%>它呈現出通知。
如果我將部分代碼粘貼到index.html.erb文件的頂部,它會正確呈現。因此,我認爲我錯誤地渲染了局部視圖?
任何幫助,非常感謝。謝謝!
你錯過了關鍵部分:你如何渲染局部。另外,不要在底部取消閃光燈。 Rails已經爲你做了這些。 –
感謝您的信息。我添加了如何渲染部分。 –
你不需要做這個<%flash [:error] = flash [:errors] = flash [:notice] = nil%> –