如何在没有名称列的情况下显示名称而不是ID

时间:2017-05-29 04:18:43

标签: ruby-on-rails ruby rails-admin

我有3个表,Activity,Activity_type和Itineraries。在活动类型中,我插入一个新的条目名称=>测试=>例。在我的活动中,我可以使用我在下拉列表中创建的活动类型并键入位置。

在创建新行程时,会有一个下拉活动和用户(创建新行程并选择特定行程的活动),但它只显示活动#1和用户#1。在我的列表中,我认为这就是为什么它只显示活动#1而不是测试。

问题:

1)在创建新行程时,如何将活动#1更改为特定名称?(例如:在下拉列表中,它应该是测试而不是活动#1)

2)如何在没有名称列的情况下显示名称而不是ID?

活动表

activity_type_id
location_id

行程表

title
created_by

活动类型表

name
description

注意:我也在下面尝试过,但没有发生任何事情

Rails管理员

config.model Itinerary do
list do

  field :title
  # field :schedule
  field :no_of_days
  field :activity
  field :user      
  # field :location      
  # field :activity_type
  # field :location_name
end
create do
  field :title    
end
object_label_method do 
    :activity_label_method
    end
  def activity_label_method
     "#{self.activity_type_id}" 

  end

行程模式

class Itinerary < ApplicationRecord
  belongs_to :user, foreign_key: :created_by
  belongs_to :activity
  has_many :activity_itineraries, foreign_key: :created_by

  validates :user, presence: true
  validates :title, presence: true, length: { maximum: 20 }
  validates :no_of_days, presence: true,
               :numericality => true


  def name
    activity_type.name
  end

end

1 个答案:

答案 0 :(得分:1)

在您的模型中定义方法titlename,如下所示,

def name
  activity_type.name
end
rails_admin.rb中的

,(您可能需要根据您的模型关联进行修改,这只是来自此thread的评论的概念)

field :activity_type_id, :enum do
  enum do
    Activity.collect {|act| [act.name, act.id]}
  end
end
相关问题