Sto cercando un modo per modificare/aggiungere parole chiave correlate a un articolo, in linea in Activeadmin.Modifica relazioni molti a molti in Activeadmin
Ho definito un semplice molti-a-molti setup:
class Area < ActiveRecord::Base
has_many :area_keywords
has_many :keywords, :through => :area_keywords
accepts_nested_attributes_for :keywords, :reject_if => :all_blank, :allow_destroy => true
end
class AreaKeyword < ActiveRecord::Base
belongs_to :area
belongs_to :keyword
end
class Keyword < ActiveRecord::Base
has_many :area_keywords
has_many :areas, :through => :area_keywords
end
vorrei aggiungere e modificare le parole chiave in forma en zona, quindi ha installato questo Aciveadmin:
ActiveAdmin.register Area do
form do |f|
f.inputs "Area details" do
f.input :title
f.input :description
end
f.has_many :keywords do |k|
if k.object.nil?
k.input :word, :label => 'Keyword'
else
k.input :word, :label => k.object.word
k.input :_destroy, :as => :boolean, :label => "delete"
end
end
end
end
Funziona come previsto.
Ma se aggiungo la stessa parola chiave a due aree diverse, la parola chiave verrà creata due volte.
Quando si inserisce una nuova parola chiave (nel modulo Area), vorrei creare automaticamente una relazione con una parola chiave esistente o creare una nuova parola chiave, se non esiste. Quale sarebbe il modo migliore per farlo?
Soluzione molto bella.Grazie per la condivisione! Ho usato entrambe le gemme dopo aver postato questa domanda, ma ha senso usarle insieme in questo modo. –
buona soluzione, ma voglio che alcune opzioni di default dovrebbero essere selezionate. Diciamo che durante l'aggiornamento voglio che i miei attuali figli debbano essere selezionati di default. Come posso farlo con select2. –
l'ho fatto con: selected => IDS –