2017-02-15 1 views
0

У меня есть form_for для создания новой записи. Я установил методы getter и setter для доступа к полю формы в моем представлении. Ниже приведены мои геттер анс присваиватели с моей точки зрения формы,getter не получает значения для новой записи на рельсах проверки 4

Getter Методы & Setter соответственно:

def manufacturer_model_name 
    self.manufacturer_models.pluck(:name).join(', ') unless self.manufacturer_models.blank?  
end 

def manufacturer_model_name=(names) 
    names = names.split(',').map{|n| n.strip}.delete_if(&:empty?) if names.present? 
    names.uniq.each do |name| 
    id = ManufacturerModel.where(:name => name, :manufacturer_id => manufacturer.id).first_or_create.id   
    if self.new_record? 
     self.user_skill_manufacturer_models.build(:user_skill_id => self.id, :manufacturer_model_id => id) 
    else 
     self.user_skill_manufacturer_models.where(:user_skill_id => self.id, :manufacturer_model_id => id).first_or_create.id 
    end 
    end if names.present? 
end 

Форма выпуска:

= f.text_field :manufacturer_model_name, :class => 'form-control 

Моя проблема заключается в том, что мой вклад поле автозаполнения с несколько установлено значение true, чтобы получить несколько значений. когда пользователь вводит несколько значений, разделенных запятыми, и отправляет форму, и, если в форме есть какие-либо ошибки, мое новое действие визуализируется, и пользователь потерял все введенные значения, заставляя его снова вводить все. Как я могу решить эту проблему?

ответ

0

Лучше сделать поле manufacturer_model_name_form или его отправьте через attr_accessor, а затем проанализируйте его в поле пользователя validate. Это будет выглядеть примерно так:

class ManufacturerModel < ActiveRecord::Base 
    attr_accessor :manufacturer_model_name_form 

    validate :validate_manufacturer_model_name 

    def validate_manufacturer_model_name 
    errors.add(:manufacturer_model_name, 'not a valid manufacturer model name') if !!true # perform your validation here in place of `!!true` 
    end 
end 

Тогда в вашей форме, вы будете использовать manufacturer_model_name_form вместо manufacturer_model_name:

= f.text_field :manufacturer_model_name_form, :class => 'form-control' 
Смежные вопросы