2012-02-16 3 views
5

Ho RailsAdmin in esecuzione per la mia app Rails 3 che ha due modelli - Sale e Merchandise. C'è una relazione HABTM tra i due. In RailsAdmin, quando una vendita viene aggiunta o modificata, viene visualizzata una lista di articoli disponibili nel solito modo. Tuttavia, viene mostrata solo la colonna "nome" della merce. Ho un'altra colonna il cui valore deve essere incluso nella lista per avere un senso. Come aggiungo questo all'interfaccia RailsAdmin?Aggiunta di un valore di colonna aggiuntivo in un elenco su RailsAdmin

Capisco che il RailsAdmin docs affermi che le dichiarazioni di campo hanno accesso a un hash dei binding che contiene l'istanza del record corrente, ma non riesco a trovare alcun esempio su come implementarlo. Grazie per qualsiasi aiuto.

risposta

5

Suggerirei di utilizzare il metodo etichetta oggetto personalizzato per questo. Il tuo RailsAdmin config potrebbe essere simile a questo:

config.model Merchandise do 
    object_label_method 
    :custom_label 
    end 
end 

E il vostro modello di ActiveRecord conterrebbe un metodo per le etichette esempio:

class Merchandise < ActieRecord::Base 
    def custom_label 
    "#{self.label} #{self.another_column} #{self.another_column2}" 
    end 
end 

Ciò non rispondere alla tua domanda sulle variabili attacchi disponibili, ma io spero che affronta la questione radice. Se vuoi vedere quali variabili sono accessibili in una vista campo personalizzata, puoi consultare le viste in ~/rails_admin/app/views/rails_admin/main /. Un rapido grep mostra che i collegamenti [: oggetto] sono accessibili in quelle viste, ma IIRC, ci sono alcune altre variabili di binding accessibili.

+0

Voglio solo aggiungere per gli altri, l'object_label_method può essere aggiunto direttamente all'interno del modello in modo da poter mantenere tutte le configurazioni all'interno del particolare modello (e come bonus aggiuntivo non sarà necessario riavviare il server per la nuova modifica della configurazione). –

5

di avere almeno i seguenti oggetti disponibili:

bindings[:object] # the actual object 
bindings[:view] # you can access view helpers here 
bindings[:controller] # you can access the controller 

Quello che vi serve in questo caso è bindings[:object]