Rails:如何在active_admin中的has_many关系中显示名称而不是ID或地址?

时间:2013-07-06 03:08:16

标签: ruby-on-rails activeadmin

这些天我正在使用active_admin来管理我的数据。我有一个音频模型和问题模型。音频有很多问题,问题属于音频。 我使用active_admin来创建问题。但是在问题的新页面中,有一个下拉列表显示的内容如:

#<Audio:0xb4116084>

有了这个地址,我几乎无法识别出我想要的文件。我想在Audio的下拉列表中显示的是Audio的标题,它是Audio模型的一列。我只想在新页面中更改此列,其他列保持与默认值相同。我该怎么办?谢谢!

2 个答案:

答案 0 :(得分:8)

音频类必须实现display_name方法

实施例

class Audio
   def display_name
     title
   end
end

这是来自有效的管理员来源

 # Active Admin makes educated guesses when displaying objects, this is
    # the list of methods it tries calling in order
    setting :display_name_methods, [ :display_name,
                                      :full_name,
                                      :name,
                                      :username,
                                      :login,
                                      :title,
                                      :email,
                                      :to_s ]

看起来你没有这样的方法所以为音频对象调用to_s

答案 1 :(得分:0)

您可以使用:member_label。

这是一个例子

form :html => { :enctype => "multipart/form-data" }  do |f| 
  f.input :problems,
          :input_html => { :multiple => false, :style => "width: 700px;"},
          :collection => Audio.all,
          :member_label => :audio_name
end