ActiveAdmin交叉参考模型

时间:2015-05-27 15:15:21

标签: ruby-on-rails activeadmin formtastic

我有两种不同的型号。一个名为“书籍'还有一个名为“作者”的作品。在ActiveAdmin中,当创建一本新书时,在'图书'下,如何在表单中添加一个下拉列表,其中包含来自“作者”的作者列表。模型?

我一整天都在寻找暗示,并且还没有设法提出任何建议......任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:3)

alexandrine_greenfelder 的答案是一个合适的解决方案,但是当涉及到更大量的数据时,这种用于选择的加载条目需要花费大量时间。

在这种情况下,

pluck要快得多:

f.input :author, as: :select, collection: -> { Author.pluck(:full_name, :id) }

另外请注意我如何使用lambda为一个集合播种:

-> { Author.pluck(:full_name, :id) }

这样,一旦单击选择下拉列表,数据将从数据库加载,而不是在初始化模型时(这会阻止情况,当新的Author实例添加到db,但尚未出现在下拉列表中)。

答案 1 :(得分:2)

使用类似的东西:

f.input :author, as: :select, collection: Author.all.map { |a| [a.full_name, b.id] }
<{1>}部分中的