Select2を使用して、他のユーザー(複数のタグ)にコンテンツを割り当てています。追加された担当者を削除する方法がわからないことを除いて、すべてうまく機能します。
モーダルの担当者のリストにユーザーを追加したら、クラスとのクロスをクリックするとselect2-search-choice-close
、対応するクラスのリストアイテムがselect2-search-choice
入力フィールドから削除されますが、IDは担当者トークンから削除されません(したがって、渡されます)。フォームを送信するときにコントローラーに送信します)。
私は何が欠けていますか?
注:これが関連しているかどうかは100%わかりませんが、フォームを送信したときに渡されたassignee_idsに同じIDが複数回含まれている場合があります(例:assignee_ids => "12,1,4,4")。
これが私が入力を初期化する方法です:
$('#assignable_item_assignment_assignee_ids').select2({
minimumInputLength: 2
tags: true
tokenSeparators:[',', ' ']
createSearchChoice: (term, data) ->
{id: term, new_choice: true}
multiple: true
ajax:
url: url
dataType: 'json'
quietMillis: 150
data: (term, page) ->
query: term
results: (data, page) ->
return {results: data}
formatResult: userFormatResult
formatSelection: userFormatSelection
formatInputTooShort: (term, minLength) ->
"Search existing users or assign by email"
dropdownCssClass: 'select2'
})
そして、これは私が使用しているフォームです:
<%= form_for AssignableItemAssignment.new, url: assignable_items_assignments_path, html: { class: "form-horizontal", id: "new-assignment" } do |f| -%>
<fieldset>
<div class="control-group">
<%= f.label :to %>
<div class="with-spinner">
<%= f.text_field :assignee_ids, placeholder: "Search users by name or email", class: 'select2' %>
</div>
</div>
<div class="control-group">
<%= f.label :add_a_message %>
<%= f.text_area :message, rows: 3, placeholder: "Add a message for your recipients (optional)" %>
</div>
<%= f.button "Submit", disable_with: 'Submiting' %>
</fieldset>
<% end %>