У меня есть модель в приложении Rails для Бюллетеня, и когда она создана, многие значения хранятся в базе данных как сериализованные хэши или массивы, к которым нужно получить доступ позже. Я пытаюсь создать представление редактирования только для одного из этих хэшей, но я не могу понять, как получить к нему доступ в моей форме.Как редактировать сериализованные хэши Rails в форме?
Хэш выглядит следующим образом при хранении:
top_offices = { first_office: "Office Name", first_office_amount: 1234.50,
second_office: "Office Name", second_office_amount: 1234.50 }
И так далее ... Есть пять отделений.
Таким образом, в консоли я могу изменить значение, выполнив:
bulletin = Bulletin.last
bulletin.top_offices[:first_office] = "New Office"
bulletin.top_offices[:first_office_amount] = 1234.00
bulletin.save
Я не могу понять, как сделать форму, которая позволяет мне присвоить эти значения правильно. Мне даже не нужна форма для заполнения ранее сохраненными значениями, потому что я меняю их полностью в любое время, когда использую форму.
Хорошо. Я думаю, что смогу это выяснить, используя вариант один. Я, вероятно, предпочитаю второй подход, но я не могу понять, как это работает в моей голове. Как использовать эти методы в форме? Могу ли я просто создать 'form_tag' и некоторые' text_field_tag' для ': first_office' и т. Д., Как только я их определю, и отправьте на мое действие по обновлению? –
Помощники вида * _field ищут имя данного атрибута для объекта, данного form_for. Поэтому, если вы сделали 'form_for @bulletin do | f |', а затем вы выполните 'f.text_field: first_office', то помощник' text_field' вызовет что-то с именем 'first_office' на объект.Это может быть атрибут или метод. Это «волшебная» часть;) – ZedTuX