我创建了一个关联,其中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的新手。
答案 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_s
或 to_label
似乎是不错的候选者。我更喜欢display_name
。