56 votes

Comment utiliser ActiveAdmin sur des modèles utilisant has_many par association?

Je suis à l'aide de ActiveAdmin gem dans mon projet.

J'ai 2 modèles à l'aide de has_many par l'association. Le schéma de base de données ressemble exactement le même que l'exemple de la RailsGuide. http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association has_many through association

Comment puis-je utiliser ActiveAdmin à ...

  1. spectacle date de nomination de chaque patient, les médecins de la page?
  2. modifier la date de nomination de chaque patient, les médecins de la page?

Merci à tous. :)

84voto

PeterWong Points 10070

Pour 1)

 show do
  panel "Patients" do
    table_for physician.appointments do
      column "name" do |appointment|
        appointment.patient.name
      end
      column :appointment_date
    end
  end
end
 

Pour 2)

 form do |f|
  f.inputs "Details" do # physician's fields
    f.input :name
  end

  f.has_many :appointments do |app_f|
    app_f.inputs "Appointments" do
      if !app_f.object.nil?
        # show the destroy checkbox only if it is an existing appointment
        # else, there's already dynamic JS to add / remove new appointments
        app_f.input :_destroy, :as => :boolean, :label => "Destroy?"
      end

      app_f.input :patient # it should automatically generate a drop-down select to choose from your existing patients
      app_f.input :appointment_date
    end
  end
end
 

15voto

Nazar Points 1204

En réponse à la question suivante de tomblomfield dans les commentaires:

Essayez ce qui suit dans votre modèle de modèle AA ActiveAdmin.register do:

   controller do
    def scoped_collection
      YourModel.includes(:add_your_includes_here)
    end
  end
 

Cela devrait charger paresseusement toutes vos associations pour chaque page d'index dans une requête séparée

HTH

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X