Ajout d'une valeur de colonne supplémentaire dans une liste sur RailsAdmin
-
26-10-2019 - |
Question
J'ai RailsAdmin courir pour mes Rails 3 app qui a deux modèles - Vente et marchandises. Il y a une relation HABTM entre les deux. En RailsAdmin, lorsqu'une vente est ajouté ou modifié une liste de marchandises disponibles est indiqué de la manière habituelle. Cependant, seule la colonne « nom » de la marchandise est affichée. J'ai une autre colonne dont les besoins valeur à inclure dans la liste de sens. Comment puis-je ajouter ceci à l'interface RailsAdmin?
Je comprends que le RailsAdmin docs dire que les déclarations sur le terrain ont accès à un les liaisons hachage qui contient l'instance en cours d'enregistrement - mais je ne peux pas trouver des exemples de la façon de mettre en œuvre. Merci pour toute aide.
La solution
Je propose que vous utilisez la méthode de l'étiquette d'objet personnalisé pour cela. Votre config RailsAdmin pourrait ressembler à ceci:
config.model Merchandise do
object_label_method
:custom_label
end
end
Et votre modèle ActiveRecord contiendrait une méthode pour l'instance étiquettes:
class Merchandise < ActieRecord::Base
def custom_label
"#{self.label} #{self.another_column} #{self.another_column2}"
end
end
Cela ne répond pas à votre question sur les variables disponibles consolidations, mais j'espère qu'il aborde la question de la racine. Si vous voulez voir quelles variables sont accessibles dans une vue sur le champ personnalisé, vous pouvez regarder à travers les vues dans ~ / rails_admin / app / views / rails_admin / main /. A montre grep rapide que les liaisons [: objet] est accessible dans ces vues, mais IIRC, il y a quelques autres variables liaisons qui sont accessibles
.Autres conseils
Vous avez au moins les objets suivants disponibles:
bindings[:object] # the actual object
bindings[:view] # you can access view helpers here
bindings[:controller] # you can access the controller
Ce que vous devez dans ce cas est bindings[:object]