Question

I am using select2-rails 3.5.7 with ActiveAdmin 0.6.0 and acts_as_taggable_on 3.1.1.

I want to use semicolon as a token separator, so I do:

# config/initializers/acts_as_taggable_on.rb
ActsAsTaggableOn.delimiter = ";"

and

# app/admin/model.rb
form do |f|
  f.inputs do
    f.input :keyword_list, as: :select2_tags
  end
end

Now, after telling acts_as_taggable_on to use semicolon as a token separator, I also need to tell select2 to do the same - via ActiveAdmin.

The select2 docs on tags say that it is possible to specify a list of tokenSeparators for AutoTokenization.

How do I tell ActiveAdmin to tell select2 to use semicolon instead of comma?

Était-ce utile?

La solution

See https://github.com/argerim/select2-rails/issues/87.

I derived Select2TagsInput from Formtastic::Inputs::StringInput long time ago and forgot where to look, it was all there... For your interest:

# app/inputs/select2_tags_input.rb
class Select2TagsInput < Formtastic::Inputs::StringInput
  def input_html_options
    default_options = { width: '76%', tags: ActsAsTaggableOn::Tag.all.map(&:name) }
    create_options = options[:create_options] || {}
    create_options.merge!(default_options)
    data = { create_options: create_options }
    super.merge(:class => 'select2-input', data: data)
  end
end

To specify custom create options, I do

f.input :keyword_list, as: :select2_tags, :create_options => { :tokenSeparators => [";"] }

which will now render correctly as

<input class="select2-input" data-create-options="{'tokenSeparators':[';'], 'tags':[...]}" id="item_keyword_list" name="item[keyword_list]" type="text" value="BlahBlah" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top