O Rails 4 vem com o novo recurso chamado Strong Params. Este é um pequeno snipper para fazê-lo funcionar com atributos aninhados.
Por exemplo, você tem esses dois modelos:
class Tag < ActiveRecord::Base
belongs_to :test_set
end
class TestSet < ActiveRecord::Base
has_many :tags
accepts_nested_attributes_for :tags
def tags_for_form
collection = tags.where(test_set_id: id)
collection.any? ? collection : tags.build
end
end
E este formulário:
= simple_nested_form_for @test_set do |f|
= f.input :name
= f.simple_fields_for :tags, @test_set.tags_for_form do |tag|
= tag.input :name, label: "Tag Name"
= tag.input :test_set_id, input_html: {value: @test_set.id}, as: :hidden
Agora tudo o que você precisa fazer é permitir test_sets e parâmetros de tags no controlador
def test_set_params
params.require(:test_set).permit(:name, tags_attributes: [:id, :name])
end
Isso é tudo, você está pronto para ir!