Je me suis bloqué avec cela pendant des jours et j'ai essayé tout ce que je pouvais penser. Essayer de modifier une application créée par quelqu'un d'autre en utilisant rails_admin. Tout ce que je veux faire est de faire un champ, Course
dans la liste pour être triable par ordre alphabétique et interrogeable. J'ai un modèle home_study_registration
.rails_admin comment rendre une colonne triable et interrogeable
- HomeStudyRegistration hérite de ClassRegistration
- class_registration has_one: Bien sûr,: par =>: course_class
- : course_class est un modèle abstrait qui belongs_to: cours
- : cours a une chaîne d'attribut
:title
qui maintenant affiche dans la table et, lorsque cliqué navigue à la vue show de ce cours.
Ce dernier est ce que j'essaie de modifier. Est-il possible de rendre cette colonne triable? Aussi, comment puis-je ajouter un filtre pour rechercher par l'attribut :title
? Ceci est mon modèle home_study_registration.rb
:
class HomeStudyRegistration < ClassRegistration
default_scope { joins(:course_class, :course, :user).where('course_classes.class_type = ?', "home").readonly(false) }
delegate :full_name, :email, :profession, :ce_state, :ce_number, :to => :user, :prefix => true
delegate :eacc, :to => :course_class
delegate :title, :to => :course
RailsAdmin.config do |config|
config.model HomeStudyRegistration do
navigation_label 'Course Management'
parent HomeStudy
label 'Manage Home Study'
list do
sort_by :created_at
filters [:created_at, :status]
field :user do
label 'name'
column_width 120
end
field :cart do
label 'order'
column_width 50
end
field :user_ce_state do
label 'Lic. St.'
column_width 25
pretty_value do
if bindings[:object].licenses.any?
bindings[:object].licenses.order(:created_at).collect{ |l| l.state }.join("<br>").html_safe
else
bindings[:object].user_ce_state
end
end
end
field :user_profession do
label 'Lic. Type'
column_width 100
pretty_value do
if bindings[:object].licenses.any?
bindings[:object].licenses.order(:created_at).collect{ |l| l.show_profession }.join("<br>").html_safe
else
bindings[:object].user_profession
end
end
end
field :user_ce_number do
label 'Lic. '
column_width 80
pretty_value do
if bindings[:object].licenses.any?
bindings[:object].licenses.order(:created_at).collect{ |l| l.number }.join("<br>").html_safe
else
bindings[:object].user_ce_number
end
end
end
field :eacc do
column_width 60
end
field :course do
label 'Course'
column_width 200
end
field :score do
column_width 55
end
field :status, :enum do
column_width 55
enum do
['Active', 'Completed', 'Expired', 'Errors']
end
end
field :exam_completed_at do
label 'Completed'
end
field :created_at do
label 'registered'
end
end
edit do
field :course_class do
associated_collection_scope do
# bindings[:object] & bindings[:controller] are available, but not in scope's block!
Proc.new { |scope|
scope = scope.where(class_type: "home")
}
end
end
field :user
field :status, :enum do
enum do
['Active', 'Completed', 'Expired', 'Errors']
end
end
field :exam_completed_at do
label 'Completed'
end
field :exam_attempts
field :score
end
export do
field :user_full_name
field :user_email
field :cart_id do
label 'Order'
end
field :user_ce_state do
label 'Lic. state'
end
field :user_profession do
label 'Lic. type'
end
field :user_ce_number do
label 'Lic. #'
end
field :eacc
field :course_title
field :score
field :status
field :exam_completed_at do
label 'Completed'
end
field :created_at do
label 'Registered'
end
end
end
end
end
Si nécessaire, je peux abréger cela. Mais j'ai pensé qu'il pourrait être utile de montrer le contexte des autres méthodes et domaines. La région que je me concentre sur a été:
...
list do
sort_by :created_at
filters [:created_at, :status]
...
field :course do
label 'Course'
column_width 200
end
...
J'ai essayé d'ajouter sortable: true
et sortable :title
et toutes les variantes de tag filtrables et consolidations « de pretty_value ». Ce problème a drastiquement raccourci ma vie. Puis-je avoir une aide s'il vous plait?
Merci
Je ne l'ai pas utilisé rails_admin avant. Je suppose qu'il a ses propres méthodes pour trier les colonnes? À quoi ressemblent les données dans la colonne du cours? Quel type de données est-ce? – Lumbee
Merci @Lumbee, la colonne affiche l'attribut ': title' pour le modèle Course, qui est une chaîne. Ouais, le rails_admin DSL est vraiment abstrait et beaucoup de la documentation se contredit. Je suis en mesure d'obtenir 'sortable' travaillant sur la colonne maintenant en ajoutant une ligne' sortable {: title} 'dans le bloc" field course do ", dont FYI n'est pas * dans * les syntaxes décrites dans les docs . Allez comprendre. Malheureusement, impossible d'obtenir un travail interrogeable/interrogeable, car l'ajout d'une balise similaire produit une erreur PG (non définie "FROM"). Probablement parce que * Course * est le petit-fils de * ClassRegistration *. Frustrant. –