В Rails как обновить поля формы в модели?

Давайте притворимся, что я хочу установить все поля, которые я указываю как «лягушка»,

В модели я могу установить каждый из них вручную, используя:

self.field1 = 'frog'
self.desc_field = 'frog'
self.fieldx = 'frog'
etc....

Но как это сделать, поместив имена полей в массив?

Когда я пытаюсь

fields_array=['field1','desc_field','fieldx']    
fields_array.each { |field|    
  self.field = 'frog'
}        

Это не работает. Какие-либо предложения?

ruby-on-rails,forms,model,

0

Ответов: 2


2 принят

Ответ Джона Топли выше в основном правильный, однако, поскольку вы хотите назначить значения, которые вы хотите сделать, например:

fields_array=['field1','desc_field','fieldx']    
fields_array.each { |field|    
  self.send("#{field}=", 'frog')
}

Обратите внимание на добавленный знак равенства. С этим вы делаете, self.field1='frog'а не self.field1('frog').


0

Попробуйте использовать sendметод:

fields_array=['field1','desc_field','fieldx']    
fields_array.each { |field|    
  self.send("#{field}", 'frog')
}
рубин-на-рельсы, форма, модель,
Похожие вопросы