Estimados:
Tengo un problema con un nested_form. Graba perfectamente
datos_fabricacion_filtros pero
no graba "filter_components".
Seguí este rails cast:
http://railscasts.com/episodes/196-nested-model-form-part-1?view=asciicast
Que es evidentemente de la versión 2
Como es anterior al los strong parameters, se lo agregué
como decían alguien en stack overflow.
Si no le pongo al controlador datos_fabricacion_filtro.rb
atrr_accessible :filter_components_attributes, rails da un error.
Hace un tiempo que estoy en esto pero no encuentro el error, de porque
no graba los filter_components.
El entorno es éste:
Rails 3.2.18
Ruby 1.9.3
Modelos:
# filter_components.rb (son los "hijos")
class FilterComponent < ActiveRecord::Base
attr_accessible :datos_fabricacion_filtro_id, :fc_cantidad,
:fc_cantidad, :fc_descripcion, :fc_fabricacion, :fc_tiempo,
:fc_tiempo, :id
belongs_to :datos_fabricacion_filtro
end
# datos_fabricacion_filtro.rb (esta es la "cabecera")
class DatosFabricacionFiltro < ActiveRecord::Base
attr_accessible :articulo_id, :celula_id, :dia, :observaciones,
:filter_components_attributes
has_many :filter_components, :dependent => :destroy
accepts_nested_attributes_for :filter_components, :reject_if =>
lambda { |a| a[:content].blank? }, :allow_destroy => true
belongs_to :celula
belongs_to :articulo
end
Controller:
# datos_fabricacion_filtro_controller
class DatosFabricacionFiltrosController < ApplicationController
before_filter :set_datos_fabricacion_filtro, only: [:show, :edit,
:update, :destroy]
respond_to :html
def index
@datos_fabricacion_filtros = DatosFabricacionFiltro.all
respond_with(@datos_fabricacion_filtros)
end
def show
respond_with(@datos_fabricacion_filtro)
end
def new
@datos_fabricacion_filtro = DatosFabricacionFiltro.new
4.times { @datos_fabricacion_filtro.filter_components.build }
end
def edit
end
def create
@datos_fabricacion_filtro =
DatosFabricacionFiltro.new(params[:datos_fabricacion_filtro])
flash[:notice] = 'DatosFabricacionFiltro was successfully
created.' if @datos_fabricacion_filtro.save
respond_with(@datos_fabricacion_filtro)
end
def update
flash[:notice] = 'DatosFabricacionFiltro was successfully
updated.' if @datos_fabricacion_filtro.update_attributes(params[:datos_fabricacion_filtro])
respond_with(@datos_fabricacion_filtro)
end
def destroy
@datos_fabricacion_filtro.destroy
respond_with(@datos_fabricacion_filtro)
end
def datos_fabricante_filtro_params
params.require(:datos_fabricante_filtro).permit(:articulo_id,
:celula_id, :dia, :observaciones, :filter_components_attributes =>
[:datos_fabricacion_filtro_id,:fc_cantidad,:fc_descripcion,:fc_fabricacion,
:fc_tiempo, :id ])
end
private
def set_datos_fabricacion_filtro
@datos_fabricacion_filtro = DatosFabricacionFiltro.find(params[:id])
end
end
No se si para el diagnóstico necesitan algo más, por ejemplo, las vistas.
Desde ya gracias.
--
Gustavo Courault
http://www.courault.com.ar/