2015-07-11 89 views
0

我有一個使用Rails管理的Rails 3.2.21應用程序。rails_admin當編輯belongs_to關聯顯示用戶名而不是用戶名

我已經爲特定模型ClockEvent寫了一個初始值設定項,以完成所有操作。特別是在列表/顯示/編輯操作中,我想顯示實際用戶的全名而不是用戶#1。

從下面的代碼中,我有列表並顯示與pretty_value一起使用,但是當涉及到我的編輯操作時,我非常沮喪如何讓下拉/搜索字段顯示User 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 

正如你所看到的,我也這樣做了另一個屬於站模型,但我專注於用戶模型,以及如何讓編輯字段通過用戶名或全名搜索而不是顯示用戶#1,這是非常不值錢的。

如果您有任何建議或解決方案,我會非常感激。 rails_admin wiki對這種特定類型的東西沒有幫助,我已經傾注了它。

如果您需要更多說明或者我的問題/代碼不夠清楚,請詢問。

回答

1

我想出了自己的想法。我需要在user_idstation_id字段上調用枚舉,然後調用collect來將名稱映射到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 
相關問題