gpt4 book ai didi

ruby-on-rails - Rails Flash [:notice] always nil

转载 作者:行者123 更新时间:2023-12-04 04:49:16 30 4
gpt4 key购买 nike

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

ActionView::Template::Error(当您不期望它时,您有一个nil对象!
您可能期望使用Array的实例。
计算nil。[]时发生错误:

在我的 Controller 中

  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文件的顶部,则它将正确呈现。因此,我假设我错误地渲染了局部 View ?

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

最佳答案

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

重命名您的部分,而不是Flash的东西,它应该可以工作。

另外,您无需在局部代码的底部将flash设置为nil。让Rails帮您解决这个问题。

关于ruby-on-rails - Rails Flash [:notice] always nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7972084/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com