5

가능한 중복 :
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 %> 

... (플래시가 항상 거짓이므로) 플래시 메시지가 작동하지 않습니다.

나는이 개 관련 질문이 :

  1. 왜/어떻게 정확하게 파셜/플래시 솔루션은 레일 응용 프로그램의 동작을 변경 사용합니까?

  2. 부분/플래시를 어떻게 변경합니까?

고마워요! PARAMS/값의 해시

답변

3

설정 지역 주민 부분

<%= render :partial => "partials/flash", :locals => {:flash => flash} %> 
에 전달할
관련 문제