我在Ruby on Rails项目中有一个产品模型和一个类别模型。产品模型I指定了has_many :categories
,并且在product_controller中。在创建操作中,我创建了一个变量@categories = Category.all
。类别将是诸如"冬季,夏季,春季,羊毛,纱线,棉花等"之类的东西,我如何使用这些值来组合一个带有复选框的选择,以便能够创建一个与这些类别相关联的新产品?我试了好几种方法,但就是想不出来。
好的,所以听起来好像提到复选框是XY问题的一个工件。您真正想要的是通过一个select元素将多个类别与单个产品关联起来的能力,或者更简单地说,您想知道如何在一次选择中启用多个选择。
HTML选择标签有一个multiple
选项,API文档告诉你它是如何工作的:
select(object, method, choices = nil, options = {}, html_options = {}, &block) public
方法签名的html_options部分是你想传递multiple
选项的地方。在您的例子中,应该是这样的:
<%= form.select(:categories, @categories, {}, { multiple: true} ) %>
在控制器的create
或update
中获得的参数哈希值应该包含用户选择的params[:categories]
哈希值。