Ruby on rails 搜索逻辑功能
我正在寻找的功能:我有一个表单可以搜索我的“提案”模型。我希望表单包含一个选择框并显示我拥有的类别。现在,“category”只是我的“Proposal”模型中的一列,因此railscasts的以下代码不起作用,因为它假设了一个category表和category\u id的使用Ruby on rails 搜索逻辑功能,ruby-on-rails,ruby,plugins,rubygems,Ruby On Rails,Ruby,Plugins,Rubygems,我正在寻找的功能:我有一个表单可以搜索我的“提案”模型。我希望表单包含一个选择框并显示我拥有的类别。现在,“category”只是我的“Proposal”模型中的一列,因此railscasts的以下代码不起作用,因为它假设了一个category表和category\u id的使用 <%= f.collection_select :category_id_equals, Category.all, :id, :name, :include_blank => tr
<%= 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列中引入uniques,而不是重复case:-/,那么这将非常有效
此外……这让我产生了一个问题——我是否应该使用category_id来代替,并创建一个categories表,即使它只有and id和name列
提前感谢:-首先,是的,您应该将这些类别放在它们自己的模型中。或者考虑一个插件,如ActhsAsTraceTaby*一个类别是你的应用程序中的一个实体,并且应该是这样的。p> 将其添加为模型可以轻松地强制用户从列表中进行选择并维护列表。 如果希望在视图中隐藏某些旧类别,可以在某一天添加可见的布尔值。您只需添加一个可见的命名范围,即可轻松查询要填充集合\u select的项。 将类别设置为模型也会让您知道每个类别是何时创建的。 如果你想用你所拥有的东西拼凑一些东西,你可以加载这些对象,把它们的类别放到一个数组中,然后执行array.uniq!为了得到你想要的 您可以向Proposal添加一个返回唯一类别的方法
def self.unique_categories
categories = []
Proposal.all.each do |p|
categories << p.category
end
categories.uniq
end
谢谢丹维诺给了我一个完整的答案。我将添加一个类别模型,因为它将使短期问题变得更容易,并且可能也会使未来的问题变得更容易。谢谢