如何在activeadmin下拉菜单中的#<mymodel:0x000000 ...>上显示模型标题?</mymodel:0x000000 ...>

时间:2011-12-08 10:32:45

标签: ruby ruby-on-rails-3 forms activeadmin

我创建了一个关联,其中Project has_many任务和任务belongs_to Project。 我在admin / tasks.rb

中创建了表单
form do |f|
  f.inputs "Details" do
    f.input :title
    f.input :project
  end
  f.buttons
end

现在在编辑任务页面中,我有一个下拉菜单,我可以在其中选择项目,但条目为#<Project:0x00000...>. 如何自定义下拉列表中的条目以显示“项目标题”字段?

我是Rails的新手。

3 个答案:

答案 0 :(得分:9)

主动管理员使用formtastic,在模型中通过模型搜索名称,to_s,value,title等方法返回字符串。 在您看到数据条目本身时,如果您希望formtastic显示名称,请确保您输入类似

的内容
def name
    return self.what_key_you_want_to_use
end
在Project.rb模型中

那应该让formtastic显示名称动作而不是模型.to_s!

答案 1 :(得分:1)

这解决了我: -

在project.rb(Model)中,在选择下拉列表中正确显示ActiveAdmin使用alias_attribute。

alias_attribute:name,:project_name(或您在数据库中命名该字段的任何内容)

答案 2 :(得分:0)

tldr:您可以在模型上定义或别名 :to_label 以自定义使用的标签:

def to_label
  "#{name} - (#{id})"
end

alias_attribute :to_label, :name

Rails 使用的库:Formtastic,(或替代方法:Simple Form)使用 collection_label_methods 来配置检查哪些字段以导出模型的标签。

Formastic 默认值是:"to_label""display_name""full_name""name""title""username""login"、{ {1}}、"value"

简单形式 defaults 是:"to_s":to_label:name:title

由于这些字段中的大多数可能已在您的模型中使用,:to_sto_label 似乎是不错的候选者。我更喜欢display_name