我已经将rails_admin安装到我的应用程序中,我想做一些非常基本的事情......我有两个模型,他们的关联按预期出现...我有一个研讨会注册模型,属于:user。
在rails_admin中,它将我的研讨会注册用户列为用户#1,用户#1等。
我希望将其作为用户的名字。我设法做的是:
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
“pretty_value”部分为我提供了用户姓名的文字......但有两个问题:
1)它不再是一个链接。如果我保留默认值(用户#1,用户#2等),它会提供指向该用户的链接。我该如何获得该链接? rails_admin如何定义它的路径?
2)似乎非常笨拙,不得不在我的表格中以身份查找...
很抱歉,如果这是一个基本问题。我已经阅读了手册并查找了其他问题,但它还没有完全“点击”给我。我对rails也很陌生。
感谢。
我必须这样做才能使用链接:
我按照建议为全名添加了一个帮助方法,但是将它保存在我的视图助手中:
module ApplicationHelper
def full_name(user_id)
user = User.find(user_id)
user.first_name + " " + user.last_name
end
end
然后,我改变了“pretty_value”部分,如下所示:
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
基本上,要访问任何视图帮助程序(使用rails或其他方式),您必须添加indings [:view] .my_tag_to_use
要获取用户的rails_admin路由,例如,您可以执行以下操作:
bindings[:view].rails_admin.show_path('user', user_id)
答案 0 :(得分:36)
我在谷歌上偶然发现了这个问题,并找到了一种更简单的方法来做到这一点。在模型中添加title
或name
方法,rails_admin将使用该方法而不是显示“用户#1”。
class User
...
def name
first_name + " " + last_name
end
...
end
您可以使用title
代替name
,但在您的情况下,使用名称更有意义。
答案 1 :(得分:23)
RailsAdmin.config {|c| c.label_methods << :full_name}
或
config.model full_name do
object_label_method do
:full_name
end
end
然后在模型中添加full_name方法。
答案 2 :(得分:10)
我这样做是为了'角色'模型
config.model 'Role' do
object_label_method do
:custom_label_method
end
end
def custom_label_method
"#{role_name}"
end
它有效
答案 3 :(得分:4)
您可以使用rails_admin object_label_method
对于用户模型,在rails_admin.rb
中config.model 'User' do
object_label_method do
:custom_label_method
end
end
在模型创建方法
中def custom_label_method
"User #{user_name}"
end
答案 4 :(得分:2)
只需在用户模型中添加:
# Prety User name display for rails_amdin
def to_s
return self.name
end
def title
return self.to_s
end
然后重启服务器。
您必须同时添加to_s
和title
方法,并且可以根据用户架构中的任何内容更改self.name
。
它适用于Rails 4。
答案 5 :(得分:0)
对于名称通用的东西,我通常会在模型上添加一个方法。但替代解决方案是为RA
中的字段配置标签