我有一个使用Rails Admin的Rails 3.2.21应用程序。
我为特定模型ClockEvent
编写了一个初始值设定项,用于我的所有操作。特别是在列表/显示/编辑操作中,我想显示实际用户的全名,而不是用户#1。
从下面的代码中,我有列表并显示使用pretty_value
,但在编辑操作时我感到困惑如何让下拉/搜索字段显示用户full_name(这是一个User.rb中的字段而不是用户#1。
以下是我的代码。
user.rb
has_many :clock_events
clock_event.rb
belongs_to :user
配置/初始化/ rails_admin.rb
RailsAdmin.config do |config|
config.authorize_with do |controller|
unless current_user.role == 'admin'
redirect_to main_app.root_path
flash[:error] = "You are not an admin"
end
end
config.model 'ClockEvent' do
configure :user, :belongs_to_association
configure :station, :belongs_to_association
list do
field :clock_in
field :clock_out
field :user do
pretty_value do
value.try(:full_name)
end
end
field :station do
pretty_value do
value.try(:station_name)
end
end
field :created_at
field :updated_at
end
show do
field :clock_in
field :clock_out
field :user do
pretty_value do
value.try(:full_name)
end
end
field :station do
pretty_value do
value.try(:station_name)
end
end
field :comment
field :hr_comment
field :created_at
field :updated_at
end
edit do
field :clock_in
field :clock_out
field :user do
pretty_value do
value.try(:user).try(:full_name)
end
end
field :station do
pretty_value do
value.try(:station_name)
end
end
field :comment
field :hr_comment
field :created_at
field :updated_at
end
export do; end
create do; end
update do; end
end
end
正如你所看到的那样,我也是为另一个工作的belongs_to模型做这个,但是我专注于用户模型以及如何让编辑字段按用户名或全名进行搜索,而不是显示用户#1是没有价值的。
如果您有任何建议或解决方案,我真的很感激。 rails_admin wiki对这种特定类型的东西没那么有用,我已经把它倾倒了。
如果您需要更多说明或我的问题/代码不够明确,请询问。
答案 0 :(得分:1)
我自己想出来了。我需要在user_id
和station_id
字段上调用枚举,然后使用集合来将名称映射到ID。这有效!
RailsAdmin.config do |config|
config.authorize_with do |controller|
unless current_user.role == 'admin'
redirect_to main_app.root_path
flash[:error] = "You are not an admin"
end
end
config.model 'ClockEvent' do
list do
field :clock_in
field :clock_out
field :user do
searchable :full_name
pretty_value do
value.try(:full_name)
end
end
field :station do
searchable :station_name
pretty_value do
value.try(:station_name)
end
end
field :created_at
field :updated_at
end
show do
field :clock_in
field :clock_out
field :user do
pretty_value do
value.try(:full_name)
end
end
field :station do
pretty_value do
value.try(:station_name)
end
end
field :comment
field :hr_comment
field :created_at
field :updated_at
end
edit do
field :clock_in
field :clock_out
field :user_id, :enum do
enum do
User.employee.collect {|p| [p.full_name, p.id]}
end
end
field :station_id, :enum do
enum do
Station.all.collect {|p| [p.station_name, p.id]}
end
end
field :comment
field :hr_comment
field :created_at
field :updated_at
end
export do; end
create do; end
update do; end
end
config.model 'CallUnit' do
visible false
end
config.model 'CallSpecialEquipment' do
visible false
end
config.model 'CallsFacilities' do
visible false
end
end