가능한 중복 :
Flash Messages in Partials (Rails 3)Railstutorial : 플래시 메시지를 부분적으로 출력 함 오류 "정의되지 않은 메소드 'each'for nil : NilClass"?
나는 마이클 하틀의 Railstutorial을하고있는 중이 야하고 listing 7.26 응용 프로그램 레이아웃에 플래시 메시지를 추가합니다 : 이것은 잘 작동
<!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
열쇠 문제는
<% 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 문에 일부 내 _flash을 포장하기 때문에 그 플래시가 전무 인 것 같다 위 경우에 그것을 포장 등이 같은 문 ...<% if flash %>
<% flash.each do |key,value| %>
<%= content_tag(:div, value, class: "alert alert-#{key}") %>
<!-- <div class="alert alert-<%= key %>"><%= value %></div> -->
<% end %>
<% end %>
... (플래시가 항상 거짓이므로) 플래시 메시지가 작동하지 않습니다.
나는이 개 관련 질문이 :
왜/어떻게 정확하게 파셜/플래시 솔루션은 레일 응용 프로그램의 동작을 변경 사용합니까?
부분/플래시를 어떻게 변경합니까?
고마워요! PARAMS/값의 해시