ruby on rails - How to build several objects while adding association? -
rails 4.2.1, ruby 2.2.1 relations are:
class region < activerecord::base has_many :translations, dependent: :destroy has_many :custom_properties, dependent: :destroy has_many :languages, through: :translations has_many :options, through: :custom_properties accepts_nested_attributes_for :custom_properties, reject_if: :all_blank, allow_destroy: true accepts_nested_attributes_for :translations, reject_if: :all_blank, allow_destroy: true end class customproperty < activerecord::base belongs_to :region has_many :options, dependent: :destroy has_many :custom_property_translations, dependent: :destroy accepts_nested_attributes_for :options, reject_if: :all_blank, allow_destroy: true accepts_nested_attributes_for :custom_property_translations, reject_if: :all_blank, allow_destroy: true end class custompropertytranslation < activerecord::base belongs_to :custom_property belongs_to :language end class option < activerecord::base belongs_to :custom_property has_many :option_translations, dependent: :destroy accepts_nested_attributes_for :option_translations, reject_if: :all_blank, allow_destroy: true end class optiontranslation < activerecord::base belongs_to :option belongs_to :language end
in region form i'm using cocoon
nested fields.
= f.simple_fields_for :custom_properties |custom_property| = render 'custom_property_fields', f: custom_property .links = link_to_add_association 'add property', f, :custom_properties
and nested form custompropertytranslation
, optiontranslation
.
= f.simple_fields_for :custom_property_translations |custom_property_translation| = render 'custom_property_translation_fields', f: custom_property_translation .links = link_to_add_association t('.add_translation'), f, :custom_property_translations
i wan't automatically build several custompropertytranslation
, optiontranslation
depending on how many languages region has.
i tried use after_initialize
callback build necessary associations worked existing custom properties. how build several associations @ once on click add translation
?
you can use count
key in html_options
of link_to_add_association
helper determine how many new objects want create
= f.simple_fields_for :custom_property_translations |custom_property_translation| = render 'custom_property_translation_fields', f: custom_property_translation .links = link_to_add_association t('.add_translation'), f, :custom_property_translations, {count: 3}
more on available options here: https://github.com/nathanvda/cocoon/blob/be59abd99027b0cce25dc4246c86d60b51c5e6f2/lib/cocoon/view_helpers.rb
Comments
Post a Comment