Estoy tratando de guardar un hash de opciones en un solo campo de base de datos. El formulario puede guardar los datos en la base de datos, pero no puede recuperarlos nuevamente cuando voy a editarlos (por ejemplo, todos los demás campos están rellenos excepto los campos wp_options).Uso de Rails Form Helpers con clases personalizadas serializadas
class Profile < ActiveRecord::Base
serialize :wp_options
end
Ésta es mi clase personalizada:
class WP_Options
attr_accessor :wp_name, :wp_desc, :wp_limit
end
En mi formulario:
<%= form_for(@profile, :remote => true) do |f| %>
...
<%= f.fields_for :wp_options do |wp_options| %>
<%= wp_options.text_field :wp_name %>
<% end %>
...
En mi controlador:
@profile = Profile.new(:wp_options => WP_Options.new)
En mi columna DB 'wp_options':
--- !map:ActiveSupport::HashWithIndifferentAccess
wp_name: Test
Cualquier consejo sería muy apreciado.
Necesitaba mi equivalente de wp_options para mantenerme como un hash, así podía repetir sus entradas. Así que no hice ningún cambio en el modelo y puse 'OpenStruct.new' en el siguiente formulario: <% = f.fields_for: wp_options, OpenStruct.new (@ profile.wp_options) do | wp_options | %> Quizás tenga la vista asomándose a la implementación del modelo, pero todo lo que sabe es que wp_options es un hash en lugar de un objeto con métodos attr. – Turadg