#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 таким образом, но это может быть неправильно.