Actualmente tengo una aplicación Rails 3.0.10 y realicé dos modelos con asociaciones simples: has_many y belongs_to.Rails 3 - ActiveAdmin - Visualización del objeto ActiveRecord en lugar de texto
Después de instalar el complemento ActiveAdmin y crear los archivos de recursos de Ruby correspondientes, he notado un comportamiento extraño.
A continuación, puede ver que "Archivo de trabajo" pertenece a "Clientes de Ernet". Todas las asociaciones funcionan correctamente; sin embargo, el nombre para mostrar aparece como el objeto activo ActiveRecord en lugar del nombre del cliente.
Esta es la opinión de demostración cuando en la sección "Archivo de empleo":
Pero, si voy a ver el cliente real, aparece el texto correcto:
Debe haber un problema en el archivo "Job File" resou Esto es lo que está causando esto, pero no puedo entender qué podría ser. Tras Google encontré esto: http://groups.google.com/group/activeadmin/browse_thread/thread/2a261e070efa7bae
Dentro del archivo JobFile.register que se especifica el nombre para mostrar con esto:
filter :ernet_client, :display_name_methods => :display_name
esto no funciona, sin embargo, y pasado por todos los de los otros nombres disponibles en vano.
Busqué las dependencias de ActiveAdmin y sass-rails parece ser el único, pero eso es si estás usando 3.1 y estoy usando Rails 3.0.10.
Y, por último, para estar seguro de que mis asociaciones fueron de hecho trabajando, me abrió la consola de Rails y crea un archivo de trabajo:
job = JobFile.new
=> #<JobFile hash returned>
job.ernet_client_id = 2
=> 2
job.ernet_client.client_name
=> Target
Todo parece estar funcionando como debiera.
¿Alguien tiene alguna idea de cómo resolver esto?
Ok, definí un método to_s en el modelo ErnetClient.rb como sugirió. Termina causando un error en el archivo active_admin/resource/index.html.arb: variable local indefinida o método 'display_name 'para #. Sin embargo, también puse el símbolo ": display_name" en el método.Esto provocó que los filtros desplegables literalmente mostraran ": display_name" para todas las opciones desplegables. –
PhillipKregg
Bueno, no tienes un método 'display_name' para eso. El método 'to_s' debe devolver cualquier cadena que desee mostrar para su objeto' ErnetClient'. –
Por lo que estoy viendo, display_name es un método que ya existe en el complemento ActiveAdmin bajo viewhelpers: https://github.com/gregbell/active_admin/blob/master/lib/active_admin/view_helpers/display_helper.rb. ¿Podría haber algo que impida que mi aplicación lo vea? – PhillipKregg