#ruby-on-rails
Вопрос:
У меня есть модель продукта и модель категории в проекте Ruby on Rails. Модель продукта, которую я указал has_many :categories
, и внутри product_controller.rb в действии создания я создал переменную @categories = Category.all
. Категориями могут быть такие вещи, как «Зима, лето, весна, шерсть, пряжа, хлопок и т. Д.», Как я мог бы использовать эти значения для объединения выбора с флажками внутри, чтобы иметь возможность создавать новый продукт, с которым связаны эти категории? Я пробовал несколько способов, но не могу понять.
Комментарии:
1. Вы запрашиваете элемент выбора, у которого есть флажки в качестве элементов списка, да? У Rails нет помощника, который работает таким образом, поскольку HTML не допускает флажки в качестве элементов списка. Однако вы можете найти похожие вещи в библиотеках, таких как bootstrap .
2.Итак, вас, похоже, спрашивают либо (или оба!) о двух разных вещах: (1) как вы создаете список
select
options
из своей модели; или (2) как вы оформляете списокselect
options
так, чтобы они выглядели как флажки. Какая из них является вашей главной проблемой прямо сейчас? Как уже сказал @MarsAtomic: флажков нетselect
options
в HTML.3. @MarsAtomic я думаю, что моя проблема — первая, но дело в том, что мне нужно выбрать несколько значений для сопоставления, а не только одно
Ответ №1:
Хорошо, звучит так, как будто упоминание флажков было артефактом проблемы XY. Что вам действительно нужно, так это возможность связывать несколько категорий с одним продуктом с помощью элемента выбора, или, что еще проще, вы хотите знать, как включить множественный выбор в одном выборе.
У тега выбора HTML есть multiple
опция, и документация API показывает, как это работает:
select(object, method, choices = nil, options = {}, html_options = {}, amp;block) public
Раздел html_options подписи метода — это то место, где вы хотите передать multiple
параметр. В вашем случае это было бы что-то вроде этого:
<%= form.select(:categories, @categories, {}, { multiple: true} ) %>
Хэш параметров, который вы получаете в вашем контроллере create
или update
должен содержать params[:categories]
хэш выбранных пользователем параметров.