5

我想要一個select2標籤下拉列表,其中我可以選擇多個現有標籤並添加新標籤。Rails與select2(和simple_form)一起作爲標記的開始

我已經嘗試了很多不同的方法,我要麼不會使select2框工作,要麼只傳遞一個值(最後一個)。

這是最接近我得到了(通過最後一個值):

<%= f.input :tag_list, collection: @model.tags.map { |t| t.name }, input_html: { :style=> 'width: 300px', class: "taggable", data: { placeholder: "Tags" }} %> 

回答

3

正如我前面提到的,正常選擇2庫現在只使用選擇輸入的類型,但它使用選擇2滿庫時輸入的工作類型。

所以,這是解決一個問題的方法。

我仍然有問題,只傳遞一個單一的值。 我實際上是從一個例子複製/粘貼代碼,它是錯誤的。 有人指出,強參數應該包括:tag_list,這很明顯,但它實際上是爲了接受所有值而需要的{tag_list []}。

現在工作就像一個魅力。

+0

你的關於tag_list []的觀點對我來說至關重要 - 標籤被提交爲一個字符串數組,如[「a」,「b」,「c」],而不是像「a,b,c」 –

1

試試這個,希望這會爲你工作。

= f.input :tag_list, class: "taggable",data: {options: @model.tags.map { |t| t.name }} 

$(".taggable").select2(
    tags: $('.taggable').data('options') 
    width: "252px" 
); 
+0

遺憾的是它並不能幫助。它似乎必須是選擇類型的輸入。所以我添加爲::select,否則它只是一個正常的輸入框。這樣我現在得到下拉菜單,但是有和沒有選項,不是我的標籤。另外,它不是多選。 –

+0

讓我想一想。 –

2

工作對我來說這樣的:

咖啡腳本:

$(".tags").select2 
    theme: "bootstrap", 
    tags: true 
    tokenSeparators: [','] 

,並在視圖:

= f.input :tag_list, input_html: { class: 'tags', multiple: "multiple" }, collection: @video.tag_list 

重要組成部分,是多: 「多重」

而且當然,如何Mitja說,不要忘記把{tag_li st:[]}給你的控制器強壯的參數。

而作爲例子,如果你想有你的標籤,在下拉列表中的建議,你可以這樣做:

= f.input :tag_list, input_html: { class: 'tags', multiple: "multiple" }, collection: ActsAsTaggableOn::Tag.most_used(30), value_method: :name