Rails flash 总是零

我无法弄清楚为什么我的rails视图无法识别flash [:notice]或flash [:error]。 关于正在渲染的局部视图,我一直收到以下错误。 具体错误是:

ActionView :: Template :: Error(当你没想到它时你有一个nil对象!你可能期望一个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文件中,我渲染了一个部分:

  

部分具有以下代码。

 

但是,如果不是渲染部分我扔进,它会渲染通知。

如果我将部分代码放在index.html.erb文件的顶部,它会正确呈现。 因此,我假设我错误地渲染局部视图?

任何帮助深表感谢。 谢谢!

不要命名部分闪光灯。 Ruby on Rails创建一个与partial相同名称的局部变量。 在您的情况下,正在创建一个Flash局部变量。

将你的部分重命名为闪存以外的东西,它应该可以工作。

此外,您不需要在部分底部将flash设置为nil。 让Rails为您解决这个问题。

你必须将闪光灯传递给局部:

 <%= render 'shared/flash', flash: flash %> 

或者更长一点:

 <%= render partial: 'shared/flash', locals: { flash: flash } %>