我正在寻找的功能:我有一个表格可以搜索我的'Proposal'模型。我希望表单包含一个选择框并显示我的类别。现在,'category'仅仅是我的'Proposal'模型中的一列,因此以下来自railscasts的代码不起作用(因为它假设一个类别表并使用category_id)
<%= f.collection_select :category_id_equals, Category.all, :id, :name, :include_blank => true %>
我得到的最接近的是
<%= f.collection_select :category_equals, Proposal.category_like(""), :id, :category, :include_blank => true %>
如果它只从类别列中带来唯一的,而不是重复的情况,这将是完美的: - /。
另外......这让我有疑问 - 我应该使用category_id来创建一个类别表,即使它只有id和id列吗?
提前致谢: - )
答案 0 :(得分:2)
首先,是的,您应该将这些类别放在他们自己的模型中。或者考虑像acts_as_taggable*
这样的插件。类别是应用程序中的实体,应该存在。
named_scope
即可轻松查询要填充collection_select
的项目。 如果你想用你所拥有的东西来破解某些东西,你可以加载这些对象,将他们的类别放入一个数组中,然后array.uniq!
来获得你想要的那些。
您可以向Proposal添加一个返回唯一类别的方法。
def self.unique_categories
categories = []
Proposal.all.each do |p|
categories << p.category
end
categories.uniq
end