2015-05-12 22 views
4

我有,例如,項目和分類模型:的Rails的建議和遠程數據選擇

# project.rb 
has_and_belongs_to_many :categories 

# category.rb 
has_and_belongs_to_many :projects 

在前端,我需要:

  • 該項目的名稱顯示輸入類別
  • 建議/自動完成類別的名稱,如果它存在
  • 如果它不存在,我需要 動態創建它並粘貼名稱到輸入並保存ID,那麼當用戶提交表單時, 會向服務器發送ID。

所以,我有類控制器,它有方法搜索創建。搜索以JSON格式返回建議類別的ID和NAME對;創建保存類別到數據庫中,並在用戶向輸入提交新類別時返回ID和NAME對。 它是關於多個類別輸入。

此外,在網站的其他部分,我們可以滿足模型,它使用的類別模型不是has_and_belongs_to,而是belongs_to。在那裏我需要顯示與單個類別的選擇框,但與多輸入相同的邏輯。

Select2或selectize庫涵蓋了我的問題的大部分內容,但我不知道如何在輸入中保存ID而不是名稱,以及如何在用戶提交表單時將類別名稱呈現爲輸入併發送ID。

是否有任何libs或工藝來解決這個問題?

+0

http://railscasts.com/episodes/258-token-fields – AbM

+1

你的問題是什麼?在完成迄今爲止所做的工作以及仍然需要的工作之後,你會遇到困難。 – jpriebe

回答

2

我建議看Ryan Bates的優秀RailsCasts episode就可以了。他演示了您所描述的find_or_create類型的功能,但使用了jQuery Tokeninput庫。

如果您承諾使用select2,則可以使用與後端Ryan類似的方法,而在select2中使用Tagging support

+0

我看過2年前你提到的演員。它不包括我的問題。 –

1

如果我是你,我會使用模型ProjectCategoryBeloning,這將是「之間」項目和類別:has_many而不是has_many_and_belongs_to。要將項目鏈接到類別,我會以項目的形式在ui上使用嵌套屬性。對於類別的自動完成,有一個很好的jQuery.ui:https://jqueryui.com/autocomplete/,您可以使用AJAX。