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)
Simply add this in your User Model :
Then restart server.
You must add both
to_s
andtitle
method and you can changeself.name
by whatever you want from your User schema.It works for me with Rails 4.
or
Then add a full_name method in your model.
You can use rails_admin object_label_method
See link
For User model, in rails_admin.rb
In model create method
With something as generic as name I usually add a method on the model. But alternative solution is to configure label for the field in RA
I do this like for 'Role' model
It works
I stumbled upon this question on google and found a much simpler way to do this. Add a
title
orname
method to your model, which rails_admin will use instead of displaying "User #1".You can use
title
instead ofname
, but in your case it makes more sense to use name.