Я боролся с этим целый день сам. Если вы все еще ищете ответ, и если я правильно понимаю ваш вопрос, попробуйте следующий пример:
a) Использовать строительные леса для Персона имя: строковый адрес: текст, чтобы настроить модель, просмотры и др.
б)
In app/models/person.rb:
class Person < ActiveRecord::Base
attr_accessible :address, :name
serialize :address
end
Представление скаффолдинга имеет одинаковую часть _form для новых и редактируемых представлений. Вы можете получить новые и показать действия для успешного завершения, введя следующий код в форму:
<%= form_for(@person) do |f| %>
...
<%= f.fields_for :address do |address_fields| %>
Street : <%= address_fields.text_field :street %>
Zip code: <%= address_fields.text_field :zip_code %>
<% end %>
...
<% end %>
Однако представление редактирования не заполняет текстовые поля значениями из модели с приведенным выше кодом. Чтобы решить эту проблему, вам нужно извлечь значение из хэша @ person.address и явно присвоить его тексту. Если вы используете представления скаффолдов, то форма обычно визуализируется с использованием части _form. Это усложняет ситуацию, потому что добавление кода для извлечения значения компонентов адреса уносит новый объект. Вы можете обойти это, инициализировав хеш адреса во время Person.new или проверив на ноль, как сделано ниже:
<%= f.fields_for :address do |address_fields| %>
Street : <%= address_fields.text_field :street,:value => @person.address.nil? ? "":@person.address["street"] %>
Zip code: <%= address_fields.text_field :zip_code,:value => @person.address.nil? ? "":@person.address["zip_code"] %>
<% end %>
Надеюсь, это поможет.