rails_admin display name instead of id

Viewed 12557

I've installed rails_admin into my app and I want to do something pretty basic...I have two models and their association comes up as expected...I have a seminar registration model that belongs_to :user.

In the rails_admin it lists my seminar registration users as User #1, User #1, etc.

I'd like to have that be the user's name instead. What I've managed to do is this:

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

The "pretty_value" section gives me the text of my user's first and last name...but has two problems:

1) It is no longer a link. If I leave the default value (User #1, User #2, etc) it provides a link to that user. How do I get that link back? How does rails_admin define it's paths?

2) Seems awfully clunky to have to look up by id right there in my form...

Sorry if this is a basic question. I've read the manual and looked up other questions but it hasn't quite "clicked" for me yet. I'm also pretty new to rails.

Thanks.


I had to do this to get it to work with the link:

I added a helper method for the full name as suggested, but kept it in my view helpers:

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

Then, I changed the "pretty_value" section like so:

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

Basically, to get access to any view helpers (rails made or otherwise) you have to add indings[:view].my_tag_to_use

To get the rails_admin route for a user, for example you can do:

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