#ruby-on-rails #activeadmin #has-many-through #has-and-belongs-to-many
#ruby-on-rails #activeadmin #имеет много сквозных #имеет-и-принадлежит-многим
Вопрос:
У меня следующая структура модели:
Composition
имеет многоScore
(Score
принадлежитComposition
)Composition
имеет и принадлежит многимCountries
(и наоборот)
score.rb:
class Score < ApplicationRecord
belongs_to :composition
end
composition.rb:
class Composition < ApplicationRecord
has_many :scores
has_and_belongs_to_many :countries, join_table: :rights_countries
end
country.rb:
class Country < ApplicationRecord
has_and_belongs_to_many :compositions, join_table: :rights_countries
end
В activeadmin я хочу иметь возможность редактировать страны композиции, но в форме редактирования ее партитур.
Конечно, форма импортирует эти данные из композиции, и входные данные по умолчанию будут одинаковыми для всех оценок (дочерних элементов) композиции.
До сих пор я не нашел способа реализовать это в activeadmin.
Возможно ли это вообще? Если да, является ли решение простым или громоздким?
Ответ №1:
Следуя этой ссылке, я добавил inputs
внутри inputs
и обновил соответствующие параметры. Я также добавил accepts_nested_attributes_for :composition
в модель оценки.
app/models/score.rb
...
accepts_nested_attributes_for :composition
...
app/admin/score.rb
...
permit_params ...,
composition_attributes: [:id, country_ids: []]
...
form do |f|
f.inputs do
...
f.inputs "", for: [:composition, score.composition] do |c|
c.input :countries, as: :select, collection: Country.order_by_name.uniq.map { |p| [p.name, p.id] }
end
end
end
Дайте мне знать, если есть более чистое решение.