Как показать текстовое поле на основе выбора пользователя? - PullRequest
0 голосов
/ 26 мая 2011

У меня есть массив

ABC = ["A","B","C"]

<%= f.select :abc, model::ABC, :include_blank => true %>

Если я выберу C, то я хочу отобразить поле ввода для "city" и "state".В противном случае эти поля должны быть скрыты.Есть ли простой способ сделать это.Я не хочу использовать jQuery или Ajax.

1 Ответ

0 голосов
/ 28 мая 2011

Я не знаю, как изменить отображаемые поля без использования JavaScript.

То, что вы можете сделать, это всегда отображать поля города и штата, но требовать их только в том случае, если в меню выбора установлено значение C. Например, определите правило проверки, которое требует поля, если в меню выбора установлено значениеC. В вашей директории lib / введите require_if_c_validator.rb

class RequireIfCValidator < ActiveModel::EachValidator
  def validate_each object, attribute, value
    if object.your_attribute_name == 'C' && value == nil
      object.errors[attribute] < 'is required'
    end
  end
end

А затем в вашей модели назовите его по городу и штату:

validate :city, :require_if_c => true
validate :state, :require_if_c => true
...