Forma aninhada e Rails 4

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!