2009-11-09 131 views
0

我正在查找的功能:我有一個表單將搜索我的「建議」模型。我希望表單包含一個選擇框並顯示我擁有的類別。現在,「類」只不過是我的「建議」型號一欄,所以從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和名稱列?

在此先感謝:-)

回答

2

首先,是你應該把這些類別在自己的模式。或者考慮像acts_as_taggable*這樣的插件類別是您的應用程序中的一個實體,應該像這樣存在。

  1. 將其添加爲模型可以讓您輕鬆強制用戶從列表中選擇並維護列表。
  2. 如果您想隱藏視圖中的某些舊類別,您可以隨時添加可見布爾值。您只需添加一個可見的named_scope即可輕鬆查詢要使用的項目來填充collection_select
  3. 將類別作爲模型也會讓您知道每個類別的創建時間。

如果你想破解連同你有什麼事情,你可以加載這些對象,把他們的類別到一個數組,然後做array.uniq!得到你想要的人。

您可以將方法添加到返回唯一類別的提案。

def self.unique_categories 
    categories = [] 
    Proposal.all.each do |p| 
    categories << p.category 
    end 
    categories.uniq 
end 
+0

謝謝丹維諾給我一個完整的答案。我將添加一個類別模型,因爲它會使短期問題更容易,並且可能也是未來問題。 謝謝。 – asdfasdfasdfasdf 2009-11-10 09:05:37