Я создаю приложение rails 5 и интегрирую функцию тегов, используя ges Act_as_taggable_on, select2 и simple_form.
По сути, я пытаюсь сделать тег на продукте в новой форме продукта,если тег существует в раскрывающемся списке автозаполнения, используйте существующий тег, если не создаете тег.
Прямо сейчас, я немного болтаю и не знаю, где я ошибаюсь.
Все, что я получаю в форме - это пустое поле множественного выбора (ниже)
это должно появиться в виде текстового поля с раскрывающимся списком, который заполняется, когда пользователь вводит имена тегов.
Контроллер продукта "new" и "create" действия и метод product_params:
def new
@product = Product.new
respond_to do |format|
format.html
format.json { render json: @product }
end
end
def create
@product = Product.new(product_params)
respond_to do |format|
if @product.valid?
@product.save
format.html { redirect_to @product, flash: { success: "#{@product.name.titleize} has been created & added to the store." } }
format.json { render json: @product, status: :created, location: @project }
else
format.html { render action: "new" }
format.json { render json: @product.errors, status: :unprocessable_entity }
end
end
end
def product_params
params.require(:product).permit(:name, :description, :price, :tag_list, tag_list: [])
end
Мои Js:
// JS Initializer
$(document).on('turbolinks:load', function() {
// Select2 Tag Creation
$('.multiple-input').each(function() {
$(this).select2({
tags: true,
tokenSeperators: [','],
theme: 'bootstrap',
placeholder: 'seperated by space'
});
});
// Select2 Autocomplete
$('#product-autocomplete').select2({
ajax: {
url: "/products.json",
dataType: json,
results: function(data, page) {
return {
results: $.map( data, function(product.tag_list, i) {
return { id: product.id, text: product.tag.name }
} )
}
}
}
});
});
Мой ввод simple_form:
<%= f.input :tag_list, input_html: { class: 'multiple-input', id: 'product-autocomplete', multiple: "multiple"}, collection: @product.tag_list %>
Я попробовал несколько других способов реализовать это без удачи, я думаю, что это будет действительно сводиться к JSи это моя ахиллесова пята.Я учусь, но на самом деле борюсь с этим.Любая помощь здесь будет принята с благодарностью!Пожалуйста, если я пропустил любую соответствующую информацию, дайте мне знать, я буду рад опубликовать!
РЕДАКТИРОВАТЬ 1: Я добавляю рис ошибки, которую выдает моя консоль google inspect.
Примечание: URL: читает /products.json, а не @product, показанный на изображении.