В моем проекте rails 3 я пытаюсь создать последовательное диалоговое окно для отображения сообщения об ошибке / успехе, чтобы оно попадало в заголовок моей страницы.У меня есть отображение флеш-сообщений, когда они установлены с контроллеров, например:
<% if flash.length > 0 %>
<% flash.each do |key, value| %>
<% if key == "error" %>
<div class="notice error"><%= value %></div>
<% elsif key == "success" %>
<div class="notice success"><%= value %></div>
<% else %>
<div class="notice regular"><%= value %></div>
<% end %>
<% end %>
<% end %>
Но я хочу также иметь возможность отправлять в мой диалог пользовательские сообщения, которые приходят из тегов link_to, например:
<% if [certain variable is set] %>
<% message = Hash.new %>
<% message[type] = "specific message to be sent with this link" %>
<%= link_to [Link option one] %>
<% else %>
<%= link_to [Link option two] %>
<% end %>
, где "тип" - это либо "ошибка", "успех", либо что-то еще.
, когда я пытаюсь выполнить это, вручную помещая сообщение во флэш-хэш следующим образом:
<% flash[:error] = "specific message to be sent with this link" %>
<%= link to [Link option one] %>
... сообщение появляется, когда пользователь щелкает ссылку, но не удаляется после того, как пользователь нажимает другие ссылки.Сообщение остается во флэш-хеше, несмотря на мои попытки удалить его вручную.Сообщение отображается в заголовке независимо от того, на какую страницу переходит пользователь, даже если во флеш-хэш не добавлено ничего нового.
Когда я пытаюсь выполнить код с хешем «message» выше,проверяя «message» в моем заголовке и отправляя его откуда угодно, хеш, называемый «message», устанавливается не на всех страницах (только на страницу, на которую я отправляю).Понятно, что это приводит к ошибке
undefined local variable or method 'message'
всякий раз, когда 'message' специально не задано на странице.Я пробовал такие вещи, как
<% if message %>
<%# show error message %>
<% end %>
и
<% if !message.nil? %>
etc
, но я все еще получаю неопределенную ошибку.
Есть ли способ, которым я могу либо
a) вручную очистить определенное значение хеш-функции после отправки его вручную,
b) предотвратить возникновение ошибки «неопределенная переменная», когда «message» не определено,
или
в) решить эту проблему по-другому?
Большое спасибо!