Rails flash.теперь хэш с произвольным ключом?

#ruby-on-rails #validation #hash #ruby-on-rails-3.1

#ruby-on-rails #проверка #хэш #ruby-on-rails-3.1

Вопрос:

Итак, я выполняю некоторую базовую проверку и пытаюсь добавить произвольный ключ к флэш-хэшу (вы можете сделать это правильно?)

Итак, в моем контроллере у меня есть это … сообщения «previousaction» на этой странице.

 if params[:home_value] == "Select One"
    flash.now[:home_value] = "Please select a home value"
    render "previousaction"
else
    #set controller vars.. render this action as normal
end
  

И в представлении:

 <% if home_value %>
  <h6 id="notice" style="color:red;padding-bottom:5px;"><%= home_value %></h6>
  <%= label_tag "Estimated Home Value", "Estimated Home Value", :style => "color:red;"%><br/>
<% else %>
  <%= label_tag "Estimated Home Value", "Estimated Home Value" %><br/>
<% end %>
  

Но я получаю эту ошибку при попытке загрузить действие контроллера (в первый раз):

неопределенная локальная переменная или метод `home_value’

Советы приветствуются 🙂

Для Дэйва:

В предыдущем действии / представлении я использую flash [: notice] следующим образом:

 if params[:zip_code].length != 5
  flash.now[:notice] = "Invalid zipcode. Please enter your 5-digit zipcode"
  render "firstpage"
else 
  

а затем в представлении

 <% if notice %>
  

Является ли flash [: notice] специальным flash-ключом для rails?

Ответ №1:

home_value не будет волшебным образом связан с flash , он просто обрабатывается как локальная переменная; попробуйте получить доступ к флэш-хэшу :home_value напрямую.

Тем не менее, какова цель использования произвольного ключа?

Комментарии:

1. Дэйв большое спасибо, что сработало, примет через 4 минуты. Я отредактировал свой вопрос выше, чтобы отразить вопрос, который у меня есть о flash [: notice] и почему rails распознает его как уведомление в представлении… Цель произвольного ключа — разместить проверки для конкретной информации / параметров, отсутствующих в форме отправки. На данный момент форма не поддерживается ресурсами, поэтому я не смог воспользоваться помощниками по проверке nifty rails. Есть ли лучший способ сделать это?

2. Сообщения об ошибках проверки уже хранятся в errors переменной экземпляра модели в виде хэша; проверьте это 🙂 Если вы не используете модель (meh, не делайте этого;), Просто сохраняйте сообщения в обычном хэше — я не уверен, что стоит перегружать flash таким образом, но это может быть неправильно.