2015-12-09 127 views
2

我正在使用select2作爲多重選擇器。目前,這是在我的HTML文件:Select2自動添加空白值

<%= form.select "page_request_set_ids", @multiautocomplete_set_options.unshift(""), 
{}, id: "page-request-sets", multiple: true, 
allowClear: true, data: {placeholder: "Start typing sets..."} %> 

@multiautocomplete_set_options是一個字符串數組。 當我稍後訪問:page_request_set_ids時,我輸入的字符串以及空字符串一起存在。

我試圖刪除unshift(""),它保留了我的佔位符,但沒有刪除:page_request_set_ids中空白字符串的問題。

任何想法?

回答

0

selectdocumentation採取直接:

疑難雜症

當多個參數傳遞給選擇和所有選項得到取消Web瀏覽器不任何值發送到服務器的HTML規範說。不幸的是,這引入了一個問題:如果一個用戶模型有許多角色並且有role_ids訪問者,並且以編輯用戶角色的形式,用戶從role_ids多選框中取消選擇所有角色,則不發送role_ids參數。所以,像

@user.update(params[:user]) 

不會更新角色的任何大規模分配成語。

爲了防止這種情況,助手會在每次多次選擇前生成一個輔助隱藏字段。隱藏字段與多個選擇和空白值具有相同的名稱。

注意:客戶端只發送隱藏字段(表示取消選定的多選框)或兩個字段。這意味着結果數組總是包含一個空字符串。

如果您不希望助手生成此隱藏字段,則可以指定include_hidden: false選項。

那麼底線是補充:

include_hidden: false

0

對我來說,問題是我沒有通過「多:真」選項在我的ERB/HAML的select_tag,並且只設置初始化時select2中的選項。

確保您在兩個地方都有選項。