Powiel możliwe:
Flash Messages in Partials (Rails 3)Railstutorial: Umieszczanie wiadomości flash w częściowym błędzie wydajności "nieokreślona metoda" dla każdego "dla zer: NilClass"?
robie Michael Hartl za Railstutorial i listing 7.26 dodaje wiadomości bezpośrednie do układu aplikacyjnego:
<!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>
To działa prawidłowo.
Jednak starałem się oczyścić ten kod tworząc _flash.html.erb w moim częściowej folderu ...
<% flash.each do |key,value| %>
<%= content_tag(:div, value, class: "alert alert-#{key}") %>
<!-- <div class="alert alert-<%= key %>"><%= value %></div> -->
<% end %>
... a nie za pomocą ...
<%= render 'partials/flash' %>
... w moim układzie aplikacji wszystkie moje testy rspec zaczynają niepowodzeniem z następującym komunikatem dla każdego testu:
Failure/Error: before { visit signup_path }
ActionView::Template::Error:
undefined method `each' for nil:NilClass
kluczem problem wydaje się, że lampa błyskowa jest zerowa, bo owijając moje _flash częściowe w if jak to ...
<% 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 %>
... daje ten sam komunikat o błędzie o NilClass jak wyżej i otoczenie go if tak ...
<% if flash %>
<% flash.each do |key,value| %>
<%= content_tag(:div, value, class: "alert alert-#{key}") %>
<!-- <div class="alert alert-<%= key %>"><%= value %></div> -->
<% end %>
<% end %>
... Łamie wiadomości flash od pracy (ponieważ "jeśli flash" jest zawsze fałszywe).
Mam dwie pokrewnych pytania:
Dlaczego/jak dokładnie przy użyciu partials/rozwiązanie błysk zmienić zachowanie aplikacji Rails?
Jak zmienić moje częściowe/flash, aby zadziałało?
Dzięki!