Ok с Selectize.js, Acts_as_Taggable, & SimpleForm:
Во-первых, изменить входной сигнал от collection_select до нормального ввода строки. Selectize.js будет разделять все значения на теги везде, где есть запятая. Это происходит за кулисами, так как люди добавляют теги, это фактически вставляет длинную строку в вашу базу данных с любым разделителем, который вы поставляете. Затем вам нужно добавить идентификатор в этой области, так что вы можете инициализировать selectize, такие как:
<%= f.input :nationalities, as: :string, placeholder: "Nationalities", input_html: { id: 'nationality-input'} %>
Затем инициализировать selectize.js:
#The following line gets all tags ever posted for a user with the context 'nationalities' which we will use as options.
<%=nations = ActsAsTaggleOn::Tagging.includes(:tag).where(context: 'nationalities').uniq.pluck(:id, :name)
$(document).ready(function() {
$('#nationality-input).selectize({
delimiter: ',',
persist: true,
allowEmptyOption: false,
options: [
<% nations.each do |nat| %>
{text: '<%=nat[1] %>', value: '<%=nat[1]%>' },
<% end %>
searchField: 'text',
create: function(input) {
return {
value: input,
text: input
}
}
});
});
Убедитесь, что вы acts_as_taggable настройки правильно и соответствующей модели включает его. Затем в вашем контроллере просто сохраните целую строку с запятыми и всеми и разрешите выборочно переформатировать ее на представления автоматически.
Вы либо сделали бы это через вызов ajax, либо с помощью [вложенных атрибутов] (http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html). Однако вы должны показать, что вы хотя бы попытались решить проблему или задумались о решении, или этот вопрос, скорее всего, будет закрыт. – max
Я только что сделал это несколько дней назад с act_as_taggable и selectize.js. Если вы хотите, чтобы решение, использующее это, дайте мне знать. – bkunzi01
@ bkunzi01 Будет здорово знать, как вы его реализовали. – maheshkumar