theme rollincode rails gema active ruby-on-rails-3 rails-admin

ruby on rails 3 - rollincode - rails_admin mostrar nombre en lugar de id



rails db admin (6)

He instalado rails_admin en mi aplicación y quiero hacer algo bastante básico ... Tengo dos modelos y su asociación aparece como se esperaba ... Tengo un modelo de registro de seminario que pertenece a: usuario.

En rails_admin, se enumeran los usuarios de registro de mi seminario como Usuario # 1, Usuario # 1, etc.

Me gustaría que fuera el nombre del usuario. Lo que he logrado hacer es esto:

config.model SeminarRegistration do label "Seminar Signups" # Found associations: configure :user, :belongs_to_association configure :seminar_time, :belongs_to_association # # Found columns: configure :id, :integer configure :user_id, :integer # Hidden configure :seminar_time_id, :integer # Hidden configure :created_at, :datetime configure :updated_at, :datetime # # Sections: list do field :user do pretty_value do user = User.find(bindings[:object].user_id.to_s) user.first_name + " " + user.last_name end end field :seminar_time end export do; end show do; end edit do; end create do; end update do; end end

La sección "pretty_value" me da el texto del nombre y apellido de mi usuario ... pero tiene dos problemas:

1) Ya no es un enlace. Si dejo el valor predeterminado (Usuario # 1, Usuario # 2, etc.), proporcionará un enlace a ese usuario. ¿Cómo puedo recuperar ese enlace? ¿Cómo define rails_admin sus rutas?

2) Parece muy torpe tener que buscar por ID justo allí en mi formulario ...

Lo siento si esta es una pregunta básica. He leído el manual y he buscado otras preguntas, pero aún no me ha "pinchado". También soy bastante nuevo en los rieles.

Gracias.

Tuve que hacer esto para que funcionara con el enlace:

Agregué un método de ayuda para el nombre completo como se sugirió, pero lo mantuve en mi opinión:

module ApplicationHelper def full_name(user_id) user = User.find(user_id) user.first_name + " " + user.last_name end end

Luego, cambié la sección "valor_muy" de la siguiente manera:

pretty_value do user_id = bindings[:object].user_id full_name = bindings[:view].full_name(user_id) bindings[:view].link_to "#{full_name}", bindings[:view].rails_admin.show_path(''user'', user_id) end

Básicamente, para obtener acceso a cualquier asistente de visualización (rieles hechos o de otro tipo), debe agregar indings [: ver] .my_tag_to_use

Para obtener la ruta rails_admin para un usuario, por ejemplo, puede hacer:

bindings[:view].rails_admin.show_path(''user'', user_id)


Con algo tan genérico como nombre generalmente agrego un método en el modelo. Pero la solución alternativa es configurar la etiqueta para el campo en RA


Hago esto como para el modelo ''Role''

config.model ''Role'' do object_label_method do :custom_label_method end end def custom_label_method "#{role_name}" end

Funciona


Me topé con esta pregunta en google y encontré una manera mucho más sencilla de hacer esto. Agregue un método de title o name a su modelo, que rails_admin usará en lugar de mostrar "Usuario # 1".

class User ... def name first_name + " " + last_name end ... end

Puede usar el title lugar del name , pero en su caso tiene más sentido usar el nombre.


Puedes usar rails_admin object_label_method

Ver enlace

Para el modelo de usuario, en rails_admin.rb

config.model ''User'' do object_label_method do :custom_label_method end end

En modelo crear método

def custom_label_method "User #{user_name}" end


Simplemente agregue esto en su Modelo de Usuario:

# Prety User name display for rails_amdin def to_s return self.name end def title return self.to_s end

Luego reinicie el servidor.

Debe agregar tanto el método to_s como el title , y puede cambiar self.name por lo que desee del esquema de usuario.

Me funciona con Rails 4.


RailsAdmin.config {|c| c.label_methods << :full_name}

o

config.model full_name do object_label_method do :full_name end end

Luego agrega un método full_name en tu modelo.