我不明白为什么我的Rails视图无法识别flash[:notice]或flash[:error]。 我一直收到有关渲染部分视图的以下错误。 具体错误是:
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文件中,我通过以下方式呈现一个局部视图:
<%= 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>
然而,如果我在呈现局部视图时加入<%= notice %>,它会呈现出通知。
如果我将局部代码复制到index.html.erb文件的顶部,则可以正确呈现。因此,我认为我可能没有正确呈现局部视图?
非常感谢任何帮助。谢谢!
flash = nil
?错误指向哪一行?flash[:errors]
是什么 - 你没有在任何地方设置它的值。 - Zabba