Attualmente ho un'applicazione Rails 3.0.10 e ho creato due modelli con associazioni semplici: has_many e belongs_to.Rails 3 - ActiveAdmin - Visualizzazione dell'oggetto ActiveRecord invece del testo
Dopo aver installato il plugin ActiveAdmin e creato i file di risorse Ruby corrispondenti, ho notato alcuni comportamenti strani.
Di seguito, è possibile vedere che "File lavoro" appartiene a "Client Ernet". Le associazioni funzionano correttamente, tuttavia, il nome visualizzato viene visualizzato come l'oggetto ActiveRecord effettivo anziché il nome del client.
Questa è la vista spettacolo quando nella sezione "File di lavoro":
Ma, se vado a vedere il cliente attuale, appare il testo corretto:
Ci deve essere qualcosa che non va nel "File lavoro" resou Ciò sta causando questo, ma non riesco a capire cosa potrebbe essere. Dopo googling ho trovato questo: http://groups.google.com/group/activeadmin/browse_thread/thread/2a261e070efa7bae
All'interno del file JobFile.register ho specificato il nome visualizzato con questo:
filter :ernet_client, :display_name_methods => :display_name
questo non ha funzionato, però, e ho pedalato attraverso tutti gli altri nomi disponibili inutilmente.
Ho cercato le dipendenze di ActiveAdmin e sass-rail sembra essere l'unico, ma questo è se si utilizza 3.1 e sto usando Rails 3.0.10.
E, infine, per essere sicuri che le mie associazioni sono state effettivamente lavorando, ho aperto la console Rails e ha creato un file di lavoro:
job = JobFile.new
=> #<JobFile hash returned>
job.ernet_client_id = 2
=> 2
job.ernet_client.client_name
=> Target
Tutto sembra funzionare come dovrebbe.
Qualcuno ha qualche idea su come risolvere questo?
Ok, ho definito un metodo to_s nel modello ErnetClient.rb come suggerito. Finisce per causare un errore nel file active_admin/resource/index.html.arb: variabile locale non definita o metodo 'display_name 'per #. Tuttavia, ho anche inserito il simbolo ": display_name" nel metodo.Ciò ha causato il rendering dei filtri a discesa ": display_name" per tutte le selezioni a discesa. –
PhillipKregg
Bene, non hai un metodo 'display_name' per questo. Il metodo 'to_s' dovrebbe restituire qualsiasi stringa che vuoi mostrare per l'oggetto' ErnetClient'. –
Da quello che sto vedendo, display_name è un metodo già esistente nel plugin ActiveAdmin sotto viewhelpers: https://github.com/gregbell/active_admin/blob/master/lib/active_admin/view_helpers/display_helper.rb. Potrebbe esserci qualcosa che impedisce alla mia app di vederlo? – PhillipKregg