gpt4 book ai didi

ruby-on-rails - rails 教程 : Putting flash messages in partial yields error "undefined method ` each' for nil:NilClass"?

转载 作者:数据小太阳 更新时间:2023-10-29 07:07:13 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Flash Messages in Partials (Rails 3)

我正在做 Michael Hartl 的 Railstutorial 和 listing 7.26将 flash 消息添加到应用程序布局:

<!DOCTYPE html>
<html>
.
.
.
<body>
<%= render 'layouts/header' %>
<div class="container">
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
<%= yield %>
<%= render 'layouts/footer' %>
<%= debug(params) if Rails.env.development? %>
</div>
.
.
.
</body>
</html>

这很好用。

但是,我试图通过在我的部分文件夹中创建一个 _flash.html.erb 来清理这段代码...

<% flash.each do |key,value| %>
<%= content_tag(:div, value, class: "alert alert-#{key}") %>
<!-- <div class="alert alert-<%= key %>"><%= value %></div> -->
<% end %>

...并且比使用...

<%= render 'partials/flash' %>

...在我的应用程序布局中,我的所有 Rspec 测试开始失败,每个测试都显示以下消息:

 Failure/Error: before { visit signup_path }
ActionView::Template::Error:
undefined method `each' for nil:NilClass

关键问题似乎是 flash 是 nil,因为将我的 _flash 部分包装在这样的 if 语句中......

<% unless flash.empty? %>
<% flash.each do |key,value| %>
<%= content_tag(:div, value, class: "alert alert-#{key}") %>
<!-- <div class="alert alert-<%= key %>"><%= value %></div> -->
<% end %>
<% end %>

...产生与上面相同的关于 NilClass 的错误消息,并将其包装在这样的 if 语句中...

<% if flash %>
<% flash.each do |key,value| %>
<%= content_tag(:div, value, class: "alert alert-#{key}") %>
<!-- <div class="alert alert-<%= key %>"><%= value %></div> -->
<% end %>
<% end %>

... 使 flash 消息无法正常工作(因为“if flash”始终为 false)。

我有两个相关的问题:

  1. 为什么/究竟如何使用 partials/flash 解决方案改变 Rails 应用程序的行为?

  2. 如何更改我的 partials/flash 使其正常工作?

谢谢!

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